最近用VS2019写C++时候发现一个问题,在代码中直接写中文,有一部分汉字会报错,提示“常量中有换行符”。解决方法一搜就有了,因为文件编码是UTF-8,所以在编译选项里面加一个/utf-8就能解决。可以在汉字后面加一个全角空格 最好能不要出现汉字
类
class className
{
//成员函数
// 成员变量
};
定义和声明分开放
域作用限定符
访问函数
Person p;
智能指针 shared_ptr
class A
{
A()
{ cout << "A----" <<endl;}
}
//way1
A a;
auto sp1 = std::make_shared<int>(5);
auto sp11 = std::make_shared<A>(a);
//way2
int* p1 = new int[3];
std::shared_ptr<int> sp2(p1);
//way3
std::shared_ptr<A> sp3(new A);
//way4
auto sp31 = std::make_shared<A>(a);
std::shared_ptr<A> sp3(sp31);
使用shared_ptr避免了手动使用delete来释放由new申请的资源,标准库也引入了make_shared函数来创建一个shared_ptr对象,使用shared_ptr和make_shared,你的代码里就可以使new和delete消失,同时又不必担心内存的泄露。shared_ptr是一个模板类。
可以认为每个shared_ptr都有一个关联的计数器,通常称其为引用计数(reference count)。无论何时拷贝一个shared_ptr,计数器都会递增。例如,当用一个shared_ptr初始化另一个shared_ptr,或将它作为参数传递给一个函数以及作为函数的返回值时,它所关联的计数器就会递增。当给shared_ptr赋予一个新值或是shared_ptr被销毁(例如一个局部的shared_ptr离开其作用域)时,计数器就会递减。一旦一个shared_ptr的计数器变为0,它就会自动释放自己所管理的对象。
当指向一个对象的最后一个shared_ptr被销毁时,shared_ptr类会自动销毁此对象。它是通过另一个特殊的成员函数析构函数(destructor)来完成销毁工作的。类似于构造函数,每个类都有一个析构函数。就像构造函数控制初始化一样,析构函数控制此类型的对象销毁时做什么操作。shared_ptr的析构函数会递减它所指向的对象的引用计数。如果引用计数变为0,shared_ptr的析构函数就会销毁对象,并释放它占用的内存。
如果将shared_ptr存放于一个容器中,而后不再需要全部元素,而只使用其中一部分,要记得用erase删除不再需要的那些元素。