C++虚函数
1.在普通情况下,指向一种类型对象的指针不同意指向还有一种类型的对象,然而指向基类对象的指针能够指向该基类的共同拥有派生类对象(反过来不成立),这是执行时,多态的基础。指向基类队象的指针指向派生类对象后,能够訪问派生类中有基类继承下来的成员,但不能訪问那些派生类对象自己添加�的成员。
2.一个含有虚函数的类称为多态类。
3.虚函数就是在一个类中用virtual定义的成员函数。基类的虚函数在派生类中仍是虚函数,而且一般在派生类中重定义。在派生类中重定义继承成员虚函数时,即使没有保留virtual,该函数仍为虚函数。
4.注意区分重载和重定义。
5.纯虚函数是在基类中声明可是没定义的虚函数,假设基类中包括纯虚函数,那么不论什么派生类必须定义虚函数。纯虚函数的形式: virtual 类型 函数名(參数表)=0;假设派生类没有这么做,那么这个函数在该派生类中仍然是纯虚函数,此时,假设创建对象,编译将报错。
6.包括纯虚函数的类为抽象类。
7.函数重载的注意事项:a,返回值类型不能用于区分重载。
b,有typedef定义的类型不能用于区分重载。
c,不同參数传递方式不能用于区分重载。
(仅仅有參数相应位置的类型和个数能够用于区分重载)
8.在一个类声明中,以类类型本身作为形式參数且參数传递方式为按引用调用的构造函数成为:拷贝构造函数。
拷贝构造函数结构了对象安值传递的问题。
作用:a.声明对象是,使用还有一个对象来初始化。
b.作为函数形參。
c.作为函数返回值。
类类型对象安值作为形參时,,创建对象副本时,没有调用构造函数,而结束时却调用了两次析构函数,假设构造和析构用到new delete时 胡产生严重问题。
解决的方法:安值传递改为按引用传递 或 定义一个 拷贝构造函数来初始化对象副本。
对象作为函数返回值产生的问题:当一个对象由函数返回时,编译程序将自己主动创建一个暂时对象来保存函数的返回值。这个暂时对象才是函数真正的返回值。函数调用结束时,该暂时对象也被撤销。
9.能够使用訪问声明将一些被屏蔽的公有成员恢复 到原来的訪问控制状态。訪问声明採用作用域:: 基类名::成员名
10.屏蔽继承成员:,假设要在一个公有派生类中屏蔽从基类中继承的公有成员函数,通常在派生类protected private 之后定义一个全然同样的函数原形,然而函数题为空。