C++要点(三)

来源:互联网 发布:gif软件制作工具 编辑:程序博客网 时间:2024/05/20 23:57

 

1. 除了构造函数外, 任意非static成员函数都可以是虚函数。保留字virtual只在类内部的成员函数声明中出现,不能用在类定义体外部出现的函数定义上

 2. 派生类只能通过派生类对象访问其基类的protected数据成员, 派生类对其基类对象的protected成员没有特殊的访问权限.另外,基类的protected成员函数只能被派生类成员函数访问,而不能被派生类对象访问, 如下面的sub.baseFun();  会出现编译错误

 

3. C++中的函数调用默认不适用动态绑定。要出发动态绑定,必须满足两个条件:(1)只有指定为虚函数的成员函数才可能进行动态绑定,成员函数默认为非虚函数, 非虚函数不能进行动态绑定。(2)必须通过基类类型的引用或指针行函数调用。

4. 使用基类类型的引用或指针,在编译期间是不知道指针或引用所绑定的对象的类型的, 基类类型的引用或指针可以引用基类类型的对象,也可以引用派生类类型的对象。无论实际对象具有那种类型, 编译器都将他当做基类类型的对象,将派生类对象当做基类对象是安全的,因为每个派生类对象都拥有基类子对象。 而且, 派生类继承基类的操作,即, 任何可以在基类对象上执行的操作也可以通过派生类对象使用。

5. 非虚函数总是在编译时根据调用该函数的对象,引用或是指针的类型而确定。

 

6.派生类虚函数调用被覆盖的对应的基类函数时,必须显示的使用作用域操作符。如果不使用,则函数调用会在运行时确定并且将是一个自身调用, 从而导致无穷递归。当显示的使用作用与操作符时,函数的调用在编译时就确定。

 

7.如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数自身类型定义的版本。

 

8. 在基类和派生类中使用同一名字的成员函数时,在派生类作用域中派生类成员将隐藏掉基类成员, 即使他们的函数原型不同。要想访问基类的同名函数, 需要使用作用域操作符,如下:

 

 

原创粉丝点击