![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
effective-c++-笔记
无力吐槽的典哥
不错
展开
-
effective C++笔记———不同编译单元内定义之non-local static对象的初始化次序问题(真拗口o(╯□╰)o)
首先解释两个概念: 1.编译单元:简单的说,按照C++标准,每一个.cpp文件就是一个编译单元,编译器不会编译.h头文件。 2.static对象:特点:生命周期从创建一直到程序结束为止。包括:全局(global)对象;定义域命名空间(namespace)作用域内的对象;在class内、函数内以及file作用域内被声明为static的对象。 函数内的st原创 2017-09-12 16:12:28 · 674 阅读 · 2 评论 -
复制对象时不要忘记每一个成分
当为一个类编写copying函数时,应确保: 1.复制所有的local成员变量 2.调用所有base classes内的适当的copying函数另外,如果编写的copy构造函数和copy赋值运算符有相近的代码,消除重复代码的方法是建立一个新的成员函数给两者调用,这样的成员函数通常为private的init函数。可实现安全消除copy构造和拷贝赋值运算符间的代码重复。原创 2017-09-22 19:14:12 · 222 阅读 · 0 评论 -
成对使用new和delete时要采取相同形式
如果在new表达式中使用[],那么必须在相应的delete表达式中也使用[];如果在new表达式中不使用[],一定不要在相应的delete表达式中使用[]。 如果没有按照要求会发生什么呢,按照effective C++所讲,二者皆会得到未定义的结果,对于前者:可能会导致太少的析构函数被调用,furthermore,对内置类型如int者也未有定义(甚至有害),即使其没有析构函数。 对于后者:delet原创 2017-09-23 17:13:01 · 275 阅读 · 0 评论