文档章节

构造函数为什么不能为虚函数?

种地瓜
 种地瓜
发布于 2016/08/09 17:02
字数 201
阅读 7
收藏 0

 

假设有如下代码:

       class A{

    A(){}

};

 

    class B:public A{

    B():A(){}

};

 

int main(){

    B b;

    B *pb=&b;

}

 

则构造B类对象时:

   1、根据继承的性质,构造函数的执行顺序是:

    A()B()

    2、根据虚函数的性质,如果A的构造函数为虚函数,且B类也给出了构造函数,则应该只执行B类的构造函数,不再执行A类的构造函数,这样A就不能构造了

    3、这样1和2发生了矛盾

        另外,virtual函数的是不同的类型的对象产生不同动作,现在对象还没产生,如何使用virtual函数来完成你想要的动作?

 

转《王道》

© 著作权归作者所有

共有 人打赏支持
种地瓜
粉丝 9
博文 177
码字总数 45450
作品 0
深圳
程序员
私信 提问
C++ 中哪些函数不能是虚函数,理由?

在C++中有些函数能够为虚函数,有些不能,比如构造函数不能为虚函数,而析构函数可以。 那么具体的理由呢。 还有哪些其他类型的函数不能为虚函数呢。

西昆仑
2012/03/12
4.6K
8
C++ — 继承和多态的基础虚函数类

虚函数类 ————————————————————————————— 上一个博客继承中我们提到虚拟继承,现在我们来探究这种的虚函数,虚函数类的成员函数前面加virtual关键字,则这 个成...

Dawn_sf
2017/04/01
0
0
类的二三事

类 类的基本思想就是数据抽象和封装。数据抽象依赖于接口和实现。接口指类外成员对象可使用的函数接口。实现指类的成员函数和成员变量。封装实现了接口和实现的分离。 类本身就是一个作用域。...

sdoyuxuan
2017/04/07
0
0
代码疑云(4)-类的sizeof值

代码: #includeusing namespace std;class A{ };class B{char a;int b;};class C{void foo(){};};class D{virtual void foo(){};};int main(){cout<...

zhanxinhang
2011/07/06
0
0
c++设计一个不能被继承的类,为什么必须是虚继承?原因分析

用C++实现一个不能被继承的类(例1) #include <iostream>using namespace std; template <typename T>class Base{ friend T;private: Base(){ cout << "base" << endl; } ~Base(){}}; class......

___Null
2014/09/30
0
12

没有更多内容

加载失败,请刷新页面

加载更多

YARN调度

理想情况下,应用对YARN发起的资源请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用对资源的请求经常需要等待一段时间才能获取到相应的资源。在YARN中...

hblt-j
37分钟前
2
0
python通过SMTP协议发送纯文本邮件

from email.mime.text import MIMETextmsg = MIMEText('hello, world..', 'plain', 'utf-8') 构造MIMEText对象,第一个参数是邮件正文,第二个参数是MIME的subtype(plain代表纯文本),第三个...

灰白发
46分钟前
1
0
springMVC使用 @RequestBody接收对象含有日期时候报错

后台传的json对象时间格式为“YYYY-MM-dd”时自动转换成时间对象 对于其他格式的则不能处理 需要注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date test...

xiaomin0322
46分钟前
2
0
Windows系统查看某个端口被谁占用

按 win + R 打开cmd 输入 netstat -ano 例如,我们发现58332端口被占用了,然后最后显示的PID位10608 下面我们要找出占用这个端口的程序 输入tasklist|findstr "10608" 回车,发现是TIM占用的 ...

lanyu96
48分钟前
2
0
mysql——GROUP BY和HAVING

GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。 select子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组返回一个结果。...

编译中ing
52分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部