effective C++
effectiveC++ 学习笔记。
ys19921
这个作者很懒,什么都没留下…
展开
-
effective c++ 学习笔记12
条款12 复制对象时勿忘其每一个成分 面向对象系统会将对象的内部封装起来,只留两个函数负责对象的copy:即copy构造函数和赋值运算符。 当用户没有实现时,编译器会自动为对象生成这两个函数,对对象的所有参数做值copy,[浅copy]。 因此,对于在构造函数中使用new的class,要额外注意copy构造和赋值运算符。 编译器默认生成的构造函数,并不会copy new出来的对象,只复制了其地址,直接使用编译器生成的函数会有意想不到的问题。 class Account { public : Account原创 2021-08-25 00:49:06 · 86 阅读 · 0 评论 -
effective c++ 学习笔记11
条款11 在operator=中处理自我赋值 继续参考上例,当用户调用方法如下时,会有什么问题? int main() { Cat A("huahua",5); A = A; } 正常通过。 考虑如下情况 class CatOwner { public: CatOwner(std::string name = "lily",std::string cat_name ="huahua"):name_(name) { pcat_ = new Cat(cat_name);原创 2021-08-25 00:46:43 · 100 阅读 · 0 评论 -
effective c++ 学习笔记10
构造/析构/赋值运算符 条款10 令operator= 返回一个reference to *this 关于赋值,可以写成连锁赋值形式 ,如 x = y = z = 4 如果是用户自定义的数据类型class, 要如何实现? class Cat { public: Cat(std::string name="mimi", int age = 3):name_(name),age_(age){} ~Cat() {} /* Cat &operator=(const C原创 2021-08-25 00:43:52 · 54 阅读 · 0 评论 -
effective c++ 学习笔记00
前言 目的以及与其他书籍的区别 这本书目的主要是强调那些常被漠视的C++的编程的方向和观点。 其他书籍描述的是c++语言的各个成分,本书是告诉读者如何结合这些成分以便获得有效的程序。 其他书籍告诉你如何让程序通过编译,本书是告诉你如何回避编译器难以显露的问题 声明式和定义式 声明式是告诉编译器某个东西的名称和类型 extern int x; std::size_t numDigits(int num); // class Widget; template<class T> class G原创 2021-08-25 00:29:42 · 57 阅读 · 0 评论