现在的位置: 首页 > 综合 > 正文

C++要点(三)

2014年11月18日 ⁄ 综合 ⁄ 共 1628字 ⁄ 字号 评论关闭

 

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

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

 

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

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

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

 

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

 

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

 

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

 

 

抱歉!评论已关闭.