77问答网
所有问题
c++编译系统只执行最后的派生类对虚基类的构造函数的调用
c++编译系统只执行最后的派生类对虚基类的构造函数的调用,这句话什么意思,谁能帮我详细讲一下
举报该问题
推荐答案 2014-06-18
也就是假设有类C1...CN,Ci+1从Ci派生,i >= 1,那么对于定义在C1中虚函数f,若存在某个最大的i,使得Ci中有对C1中的f进行覆盖,那么Ci就是最后覆盖f的派生类(i可以为1)。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/qpYWN3qqpqIW3vp8Nq.html
相似回答
虚基类
在解决二义性中的问题中的作用是什么
答:
使用方法是在继承方式前加上一个 virtual就可以了
。找个程序给你看一下:1.为解决多继承产生的二义性问题,可以使用虚基类来消除二义性问题、如://在最后的派生类中,不仅要负责对直接基类进行初始化,还要负责对虚基类进行初始化 //编译系统只执行最后的派生类对虚基类的构造函数的调用,而忽略虚...
如何对
C++虚基类构造函数
答:
C++
规定,虚基类子对象是由最派生类的构造函数通过调用
虚基类的构造函数
进行初始化的。如果一个派生类有一个直接或间接的C++虚基类,那么
派生类的构造函数的
成员初始列表中必须列出
对虚基类构造函数的调用
。如果未被列出,则表示使用该虚基类的缺省构造函数来初始化派生类对象中的虚基类子对象。从虚基类直...
急急急!
C++
虚基类
构造函数调用
方法问题!!!
答:
该
派生类的
其他基类
对虚基类构造函数的调用
被忽略,所以
系统
不会做 : Base(j)再调用Base1(c), 将c的值传给i,(Base1(int i, int j=0) : Base(j) { cout << i; }),输出i值为3,同理系统不做: Base(j)然后根据对象成员声明顺序(Base2 mem2; Base1 mem1;)先做mem2(b), ...
虚基类
在使用虚基类时要注意
答:
值得注意的是,即使这些派生类的构造函数中多次列出
对虚基类的构造函数
,只有最远
派生类的调用
会在实际执行中被执行,以确保虚基类子对象仅初始化一次。当虚基类构造函数与非虚基类构造函数同时出现在初始化列表中时,虚基类的构造函数总是先于非虚基类执行。这种顺序保证了程序的正确初始化过程。
设置
虚基类的
目的是
答:
就只能继承基类的一份拷贝,从而消除歧义。从虚基类直接或间接派生
的派生类
中的构造函数的成员初始化列表中都要列出对虚基类构造函数的调用。但仅仅用建立对象的最远派生类的构造函数调用虚基类的构造函数,而该派生类的所有基类中列出的
对虚基类的构造函数的调用
在执行中被忽略。
C++
中
派生类的构造函数
怎么显式
调用基类
构造函数?
答:
CLSA(10);//这里显式
调用基类构造函数
给临时对象进行赋值的,但是等CLS构造函数退出返回后,临时对象丢失。所以, 这个函数没有给真正的对象赋值。因为没有取得正确的this地址。} int main(){ CLS obj(2,3);cout << obj.m_i << endl; //输出结果是什么?CLSA(j),cout<<obj.getA();return ...
c++
中 析构函数中可以
调用虚函数
么
答:
c++
中 析构函数中不可以
调用虚
函数。effective
C++
中有这样的描述:同样的原因也适用于析构过程。一旦派生类析构函数运行,这个对象
的派生类
数据成员就被视为未定义的值,所以 C++ 就将它们视为不再存在。C++中派生类在构造时会先
调用基类的构造函数
再调用派生类的构造函数,析构时则相反,先
调用派
...
大家正在搜
解释执行和编译执行的区别
派生类与基类的关系
派生类的析构函数
派生类构造函数
c语言程序编译执行解释执行
派生类是基类的什么
两个基类一个派生类
c语言程序仅可以编译执行吗
与编译方式执行程序