
Effective C++
zhongh58
这个作者很懒,什么都没留下…
展开
-
Effective C++读书笔记(条款07:为多态基类声明virtual析构函数)
C++指出,当派生对象经由基类指针被删除,而该基类带有一个非虚析构函数,其结果未有定义。实际执行时,通常发生的是派生对象成分没被销毁。基类通常会被销毁,造成一个“局部销毁”对象。解决方法很简单,给基类一个虚析构函数,此后删除的派生类对象就会如你想要的那般。任何函数只要带有虚函数,都几乎确定应该带有一个虚析构函数如果类内不含虚函数,通常表示它并不意图被用做一个基类,当类不被企图当作基类,令其析构函数为虚函数通常是个馊主意。欲实现出虚函数,对象必须携带某些信息,主要用来在运行期...原创 2022-02-27 08:15:00 · 217 阅读 · 0 评论 -
Effective C++读书笔记(条款05:了解C++默默编写并调用哪些函数 && 条款06:若不想使用编译器自动生成的函数,就该明确拒绝)
什么时候空类不再是一个空类呢?当C++处理过它之后。如果自己没有声明,编译器就会为它声明一个拷贝构造函数、拷贝赋值操作符和一个析构函数。此外,如果你没有声明任何构造函数,编译器也会为你声明一个default构造函数。所有这些函数都是public且inline的。编译器产出的析构函数是一个非虚函数,除非这个类的基类本身声明有virtual析构函数如果你打算在一个“内含引用成员”的class内支持赋值操作,你必须自己定义拷贝赋值操作符。面对“内含const成员”的classes,编译器的反应原创 2022-02-26 21:35:49 · 331 阅读 · 0 评论 -
Effective C++读书笔记(条款04:确定对象被使用前已被初始化)
永远在使用对象之前将它初始化。对于无任何成员的内置类型,你必须手功完成此事。int x=0; //对int进行手工初始化const char* text="A Cstyle string"; //对指针进行手工初始化double d;std::cin >> d; //以读取input stream的方式完成初始化...原创 2022-02-26 14:12:24 · 426 阅读 · 0 评论 -
Effective C++读书笔记(条款03:尽可能使用const)
如果关键字const出现在*号的左边,被指物是常量。 如果关键字const出现在*号右边,表示指针自身是常量。 如果关键字const出现在*号两边,被指物和指针都是常量。char greeting[]="Hello";const char* p=greeting; //non-const pointer, const data(常量指针)char* const p=greeting; //const pointer, non-const data(指针常量)con原创 2022-02-19 21:25:10 · 667 阅读 · 0 评论 -
Effective C++读书笔记(条款02:尽量以const,enum,inline替换#define)
这个条款可以理解成“宁可以编译器替换预处理器”。使用常量可能比使用#define导致较小量的码,因为预处理器“盲目地将宏名称替换”可能导致目标码出现多份。原创 2022-02-19 20:33:47 · 572 阅读 · 0 评论 -
Effective C++读书笔记(条款01:视C++为一个语言联邦)
一开始,C++只是C加上一些面向对象的特性,C++最开始的名称C with Classes也反映了这个关系。随着语言的成熟,C++开始接受不同于C with Classes的各种观念、特性和编程战略。Exceptions(异常)对函数的结构化带来不同的做法,templates(模板)将我们带到了新的设计思考方式,STL则定义了一个前所未有的伸展性做法。现在的C++已经是一个多重范型的编程语言,同时支持过程形式,面向对象形式,函数形式,泛型形式,元编程形式。要理解C++,最简单的方法是原创 2022-02-16 12:31:04 · 282 阅读 · 0 评论 -
Effective C++读书笔记(导读)
声明式是告诉编译器某个东西的名称和类型,但略去细节。extern int x; //对象声明式std::size_t numDigits(int num); //函数声明式class Widge; //类声明式template<typename T> //模板声明式class GraphNode;std这个命名空间是几乎所有C++标准程序库元素原创 2022-02-16 12:03:52 · 344 阅读 · 0 评论