c++虚函数注意事项

简介: 》在基类方法声明中使用关键字virtual,可以使该方法在基类及所有的派生类中是虚的 》如果使用指向对象的引用或指针来调用虚方法,程序将使用对象类型定义的方法,而不使用为引用或指针类型定义的方法   这称为动态联编或晚期联编,这种行为非常重要,因为这样基类指针或引用可以指向派生类对象 》如果定义的类将被用作基类,则将那些要在派生类中重新定义的类方法声明为虚的。

》在基类方法声明中使用关键字virtual,可以使该方法在基类及所有的派生类中是虚的

》如果使用指向对象的引用或指针来调用虚方法,程序将使用对象类型定义的方法,而不使用为引用或指针类型定义的方法

  这称为动态联编或晚期联编,这种行为非常重要,因为这样基类指针或引用可以指向派生类对象

》如果定义的类将被用作基类,则将那些要在派生类中重新定义的类方法声明为虚的。

》构造函数不能是虚函数

》析构函数应当是虚函数

》友元不能是虚函数,只有成员类才能是虚函数

目录
相关文章
|
9月前
|
C++
C++重载、重写、重定义
C++重载、重写、重定义
71 0
|
5月前
|
C++
54 C++ - 重写 重载 重定义
54 C++ - 重写 重载 重定义
16 0
|
安全 编译器 C语言
【七、多态】动/静态联编、虚析构函数、虚函数(虚函数表与VPTR指针)、重写与重定义
【七、多态】动/静态联编、虚析构函数、虚函数(虚函数表与VPTR指针)、重写与重定义
169 0
【七、多态】动/静态联编、虚析构函数、虚函数(虚函数表与VPTR指针)、重写与重定义
|
C++
【五、运算符重载实例分析】运算符重载实例、重载的机制、步骤、返回值及参数确定、友元函数与成员函数
【五、运算符重载实例分析】运算符重载实例、重载的机制、步骤、返回值及参数确定、友元函数与成员函数
68 0
派生类和析构函数的构造规则
派生类和析构函数的构造规则
109 0
|
C++
C++多态之析构和纯虚析构分析与示例
虚析构和纯虚析构 多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码 解决方式:将父类中的析构函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性: • 可以解决父类指针释放子类对象 • 都需要有具体的函数实现 虚析构和纯虚析构区别: • 如果是纯虚析构,该类属于抽象类,无法实例化对象
180 0
C++多态之析构和纯虚析构分析与示例
|
C#
禁止在构造函数里调用虚函数
禁止在构造函数里调用虚函数
124 0
|
编译器
构造函数为什么一般不定义为虚函数?而析构函数一般写成虚函数的原因 ?
构造函数为什么一般不定义为虚函数?而析构函数一般写成虚函数的原因 ?
338 0