Effective C++ 条款39
来源:互联网 发布:苹果手机数据漫游 编辑:程序博客网 时间:2024/05/16 08:37
我从本条款中学到了以下内容:
1.private继承不同于另外两种继承,派生类对象不能隐式转换为基类对象。如下代码:
class Bird//鸟{};class ostrich:private Bird//鸵鸟{};int main(){Bird *b = new ostrich();//编译不通过,基类不能转换为派生类}
编译器明确指出基类是不可访问的,所以转换失败。private继承在基类和派生类之间已经没有所谓的继承关系,之所以有它的存在纯粹是为应用层面服务,即为了编程的灵活性而存在的继承关系。
2.如下代码,告诉我们private调用的好处,当存在一种特殊情况时,即base class 大小为空时,调用private继承可以使派生类占据的空间大小最小化。这时有人会说我定义的类不是空,为什么大小为1个字节,这里简单解释下。任何一个类的大小都不为空,即使你这样定义
class m{};这个类的大小依然为1,类的大小只和变量有关,并且变量是非静态变量,静态变量不影响类的大小。
#include<string>#include<iostream>using namespace std;class Bird//鸟{public: static string name; static string getName(){ return name; }};class ostrich:private Bird//鸵鸟{};int main(){ int m1 = sizeof(Bird);//m1大小为1个字节 int m2 = sizeof(ostrich);//m2大小也为1个字节}
4 0
- 《Effective C++》:条款38-条款39
- Effective C++(条款39-40)
- Effective C++:条款01
- Effective C++:条款02
- Effective C++:条款03
- Effective C++:条款04
- Effective C++:条款05
- Effective C++:条款06
- Effective C++:条款07
- Effective C++:条款08
- 《effective C++》条款三
- 《effective C++》条款5
- 《effective C++》条款六
- Effective C++--经验条款
- Effective C ++ 条款34
- 《Effective C++》条款05
- 《Effective C++》条款06
- 《Effective C++》条款08
- YTU 2755: C++习题-希尔排序
- Java设计模式
- slist双向链表容器
- 常用数据结构-几种特殊的二叉树
- 如何修改Tomcat服务器Server Locations
- Effective C++ 条款39
- How to install Tomcat in Ubuntu 14.04
- 微信公众平台接入方式
- LeetCode OJ 之 Happy Number (happy数)
- 混淆点总结:重载与重写的区别?
- java如何判断数组中是否包含某元素
- dispaly的 inline, block, inline-block
- android 多进程编程 必看!
- 有效处理Java异常三原则