new在C++中主要有3种用法:
new operator:也叫做new表达式,它调用operator new进行内存分配,并调用构造函数初始化对象。
placement new:是一个特殊的new表达式,它不进行内存分配,而是在已分配好的内存上调用构造函数初始化对象。
operator new: ...
阅读更多
delete关键字和new关键字类似,主要有以下用法:
delete表达式
operator delete
禁用函数
delete表达式
delete ptr
调用ptr所指向对象的析构函数。
调用operator delete()函数来释放ptr所指向的内存。
delete[]...
阅读更多
类的定义
C++关键字-struct和class
类的构造函数和析构函数
构造函数
类的拷贝控制
类的拷贝控制
友元
见友元
类的核心特性之封装
见C++面向对象:封装
类的核心特性之继承
见C++面向对象:继承
见C++面向对象:多重继承
类的核心特性之多态
见C++面向对象:多态
this指针...
阅读更多
定义
构造函数是类的成员函数,其名称与类相同。
构造函数没有返回值。
创建对象时会自动调用构造函数。
构造函数不能被声明为虚拟的。
默认的构造函数
如果没有显式定义任何构造函数时,则编译器会隐式的生成
默认构造函数(Default Constructor)。
拷贝构造函数(C...
阅读更多
拷贝控制指的是一个类如何管理其对象的
拷贝
移动
赋值
销毁
拷贝控制由以下五个特殊的成员函数组成:
拷贝构造函数
拷贝赋值运算符
移动构造函数
移动赋值运算符
析构函数
拷贝控制的核心问题是资源管理,如果一个类不管理任何资源,那么编译器生成的默认版本通常就足够了。...
阅读更多
std::weak_ptr 要与 std::shared_ptr一起搭配使用。
一个std::weak_ptr对象看做是std::shared_ptr对象管理的资源的观察者,它不影响共享资源的生命周期:
如果需要操作weak_ptr正在观察的资源,可以将weak_ptr提升为shared_ptr。
当...
阅读更多
std::unique_ptr独占所指向的对象。对其持有的堆内存具有唯一拥有权。
当我们独占资源的所有权的时候,可以使用std::unique_ptr对资源进行管理。当离开unique_ptr对象的作用域时,会自动释放资源。
int main()
{
{
std::unique_ptr...
阅读更多
std::shared_ptr能够共享对同一资源的所有权。它允许多个指针指向同一个资源,并通过引用计数来管理资源的生命周期。
当最后一个std::shared_ptr实例被销毁或重置时,它所指向的资源才会被释放。
{
std::shared_ptr<int> sptr = std::mak...
阅读更多