2013-09-23 08:56:32 派生类对其基类类型对象的protected成员没有特殊访问权限;
 

只有声明,而未定义的类,不可以作为基类;

 

 C++函数默认不使用动态绑定,要触发,需要满足两个条件:

  1. 只有指定为虚函数的成员函数才能进行动态绑定,非虚函数不进行动态绑定;
  2. 必须通过基类类型的引用或指针进行函数调用;
 

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

 

 派生访问标号将控制派生类的用户对从Base继承而来的成员的访问;

 

 能否调用private成员,要看调用位置所处的函数权限;

 2013-09-24 08:47:56

 C++的函数调用默认不使用动态绑定;

 动态绑定条件:

  1. 只有指定为虚函数的成员才能进行动态绑定;

  2. 必须通过基类类型的引用或指针进行函数调用;

 

 通过引用或指针调用虚函数时,在运行时确定调用哪个函数,被调用的是与动态类型相对应的函数;

 非虚函数是在编译时根据调用该函数的对象、引用或指针的类型而确定;

 

 类赋值操作符防止自身赋值的目的:Class A里有个指针p。赋值时,先要释放原来的p,然后再把

 rhs的p复制一份。当自己赋给自己时,delete this->p的同时,rhs->p也给释放了(this和rhs其实是

 同一个对象)。如果不先判断下是不是自己,就会出问题。

 

 析构函数必须设计为虚函数:当基类指针指向派生类成员时,由于析构函数的顺序导致先执行基类

 的析构函数,会出错。

 

 构造函数不能定义为虚函数:构造函数是在对象完全构造之前运行的在构造函数运行的时候,对象

 的动态类型还不完整,不能被指针调用;

 赋值操作符有不需要为虚函数:不同继承层次的类,赋值操作符函数中的形参类型不同,不是同一

 函数。

 

 基类类型的指针(引用)只能访问对象的基类部分。

 

 虚函数必须在基类和派生类中拥有同一原型,否则就变为重载函数。

 

 通过指针容器解决矛盾:容器只能存储单一类型的数据 vs 基类 派生类类型。

 

 抽象基类(纯虚函数)阻止用户创建对象。

 

 句柄类:对基类进行包装,存放智能指针。

 

 使用带比较器的关联容器对基类以及派生类成员进行存储,排序。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

             

posted on 2013-09-23 09:13  Rainbow0905  阅读(193)  评论(0)    收藏  举报