C++ 继承 必须注意的地方
2014-04-17 13:59
260 查看
2)继承类构造函数的调用顺序,首先调用基类的构造函数,然后调用成员对象的构造函数,在调用自己的构造函数;成员对象的构造函数的调用顺序由成员对象在类中声明的次序决定;不受构造函数初始化表达中的次序影响;
3)命令隐藏
在没有虚函数的情况下,如果基类有2个重载函数,如果在派生类中重新定义了其中一个重载函数,那么另外的一个重载函数会被自动隐藏;
4)非自动继承的函数
不是所有的函数都能自动地从基类继承到派生类中的。构造函数和析构函数是用来处理对象的创建和析构的,它们只知道对在它们的特殊层次的对象做什么。所以,在整个层次中的所有的构造函数和析构函数都必须被调用,也就是说,构造函数和析构函数不能被继承。
另外,operator=
也不能被继承,因为它完成类似于构造函数的活动。这就是说,尽管我
们知道如何由等号右边的对象初始化左边的对象的所有成员,但这并不意味着这个初始化在继承后仍有意义。
除了赋值运算符外,其余的运算符可以自动的继承到派生类中;
5)继承和静态成员函数
静态(static)成员函数和非静态成员函数的共同点:
5.1)
它们均可被继承到派生类中;
5.2)
如果重新定义了一个静态成员,所有在基类中的其它重载函数会被隐藏;
5.3)
静态成员函数不可以是虚函数;
6)运算符重载
除了赋值运算符外,其余的运算符可以自动继承到派生类中;
3)命令隐藏
在没有虚函数的情况下,如果基类有2个重载函数,如果在派生类中重新定义了其中一个重载函数,那么另外的一个重载函数会被自动隐藏;
4)非自动继承的函数
不是所有的函数都能自动地从基类继承到派生类中的。构造函数和析构函数是用来处理对象的创建和析构的,它们只知道对在它们的特殊层次的对象做什么。所以,在整个层次中的所有的构造函数和析构函数都必须被调用,也就是说,构造函数和析构函数不能被继承。
另外,operator=
也不能被继承,因为它完成类似于构造函数的活动。这就是说,尽管我
们知道如何由等号右边的对象初始化左边的对象的所有成员,但这并不意味着这个初始化在继承后仍有意义。
除了赋值运算符外,其余的运算符可以自动的继承到派生类中;
5)继承和静态成员函数
静态(static)成员函数和非静态成员函数的共同点:
5.1)
它们均可被继承到派生类中;
5.2)
如果重新定义了一个静态成员,所有在基类中的其它重载函数会被隐藏;
5.3)
静态成员函数不可以是虚函数;
6)运算符重载
除了赋值运算符外,其余的运算符可以自动继承到派生类中;
相关文章推荐
- 从C++转学JAVA必须要注意的几个地方
- 关于c++中的类以及类的继承需要注意的地方
- C++遍历container删除需要注意地方
- 必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现
- C++字符串两个需注意的地方
- linux中bridge mode和NAT mode成功ping www.baidu.com必须注意检查核对的地方[操作系统为centos6.6版本]
- C++中重载赋值运算符应该注意的地方
- C++-多重继承的注意点
- C++ vector容器释放内存应注意的地方(一)
- c++设计一个不能被继承的类,为什么必须是虚继承?原因分析
- 从c++转到Python需要注意的地方
- js继承注意的地方
- c++ 调用webservice需要注意的地方!
- 学好C++必须要注意的十八个问题
- C++继承与多态注意点汇总
- 养山羊必须要注意的地方
- 必须要注意的 C++ 动态内存资源管理(五)——智能指针陷阱
- 学好C++必须要注意的十八个问题
- c++设计一个不能被继承的类,为什么必须是虚继承?原因分析
- java从头开始学习到选择c++ (三)控制语句需要注意的地方