文档章节

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

种地瓜
 种地瓜
发布于 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

没有更多内容

加载失败,请刷新页面

加载更多

rabbitMQ 在spring 的使用

一、准备工作 maven依赖 <dependency>  <groupId>com.rabbitmq</groupId>  <artifactId>amqp-client</artifactId>  <version>4.0.2</version></dependency> <dependency......

狼王黄师傅
昨天
1
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
1
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
3
0
跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据 应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点...

周立_ITMuch
昨天
6
0
day26:shell题

1、 判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。 如果其生产商为AuthenticAMD,就显示其为AMD公司; 如果其生产商为GenuineIntel,就显示其为Intel公司; 否则,...

芬野de博客
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部