构造函数中无法实现多态
来源:互联网 发布:sql not in() 编辑:程序博客网 时间:2024/06/03 13:55
#include <iostream> using namespace std; class Parent { public: Parent() { this->printfn(); } virtual ~Parent(){} virtual void printfn() { cout <<"1 "; } void test_again(){printfn();} }; class Son : public Parent { public: void printfn() { cout <<"2 "; } Son() { printfn(); } ~Son(){} }; int main(int argc, char* argv[]) { Parent* p = new Son();//构造函数中无法实现多态,因为子类对象都没有完全创建成功 p->test_again();//子类已经构造完成 int sign = 1; //switch中default不是必须的 switch(sign) { case 1:cout<<"123"<<endl;break; case 2:break; } return 0; }
子类构造时,先会调用父类构造函数,父类构造函数中调用printfn,它是一个虚函数,但是此时子类还处于构造过程中并没有构建完成,因此无法调用派生类的实现,只能调用父类本身的实现,我们看到的就是无法呈现多态了。这里将会输出1 2.
0 0
- 构造函数中无法实现多态
- 构造函数中无法实现多态
- c++构造函数中无法实现多态
- 构造函数中调用虚函数能否实现多态
- js中借用构造函数实现继承
- 虚函数在构造函数中实现是要注意
- 父类构造函数不能实现多态
- String类中构造函数、拷贝构造函数、赋值函数的实现
- C++中构造函数,拷贝构造函数和赋值函数的区别和实现
- C++中构造函数,复制构造函数和赋值函数的区别和实现
- c++中六种构造函数的实现以及9中情况下,构造函数的调用过程
- string构造函数实现
- 构造函数的实现
- String构造函数实现
- Javascript中实现不加new关键字的构造函数
- c# 关于继承类中构造函数的实现
- 在构造函数中调用构造函数
- 在构造函数中调用构造函数
- makefile 进阶--可以用于实际嵌入式工程中的文件编写1
- 单例模式的五种写法
- android中创建水平和竖直虚线。
- 第六章 类文件结构
- Android显示系统框架原理介绍
- 构造函数中无法实现多态
- shell--读取文件
- 该如何旋转EDIUS 8中的图片
- Eventbus简单使用
- WKWebView高级使用
- 在Beaglebone Black板上使用Yocto移植Qt5
- 安卓沿Path运动轨迹
- IOS viewDidLoad方法被执行两次(viewDidLoad和loadView方法详解)
- 【Egret】 3D 使用中的一些疑难解决技巧!