
Effective C++
时间拂面
这个作者很懒,什么都没留下…
展开
-
Effective C++——32.确定public继承是“is-a”关系
1.is-a关系的概念,就是基类可以实现的事情,子类就一定要能实现。如果不能实现,可以修改设计,比如将基类能实现,子类却不能实现的事情派生出一个中间基类。记住一点:1.“public继承”意味着is-a,适用于基类身上的每一件事情也一定适用于派生类,因为每一个派生类对象也都是一个基类对象...原创 2021-07-13 11:55:09 · 299 阅读 · 0 评论 -
Effective C++——4.确定对象被使用前已经初始化
1.为防止有的情况下对象未初始化导致的混乱,最佳的处理办法就是:永远在使用对象之前先将它初始化。对于无任何成员的内置类型,必须手工完成2.内置类型以外的任何其他东西,初始化责任在构造函数中。规则很简单:确保每一个构造函数都将对象的每一个成员初始化3.C++规定,对象的成员变量的初始化动作发生在进入构造函数本体之前。在构造函数中就是给成员变量赋值,而不是初始化4.可以用成员初始化列表对成员变量进行初始化,但因为类成员变量有时候非常多,所以这只是理想情况5.初始化时是调用变量的构造函数传递值,赋原创 2021-07-12 16:54:00 · 311 阅读 · 0 评论 -
Effective C++——22.将成员变量声明为private
1.一致性:如果public中的每样东西都是函数,就不需要思考使用的时候要不要带小括号()。 2.使用函数可以让成员变量的处理有更精确的控制 3.封装性:有时候要根据不同情况修改set和get的实现方式,被广泛应用的class的public成员通常是不可改变的,所以要封装起来,否则每次改变对客户代码影响很大。 成员变量的封装性与“成员变量的内容改变时所破坏的代码数量”成反比。 从封装的角度,其实只有两种访问权限:priv...原创 2021-07-12 13:21:36 · 262 阅读 · 0 评论 -
Effective C++——7.为多态基类声明virtual析构函数
通常的心得是,只有class内至少含有一个virtual函数时,才为它声明virtual析构函数。 但是,有时候会因为大意,继承一些没有将析构函数声明为virtual的类,通常是继承一些库的类时,类似std::string等。 当不希望类实例化,希望类是一个抽象类,但是又没有纯虚函数时,就可以将析构函数声明为纯虚的。但是依旧实现该抽象类的析构函数。 记住两点: 1.如果类是带多态性(virtual函数)的基类,就像声明v...原创 2021-07-12 11:49:35 · 210 阅读 · 0 评论