作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有这段代码:
#include <iostream>
class Bazowa
{
int x;
public:
Bazowa() : x(55){}
Bazowa(int x_) : x(x_) {}
void fun()
{
std::cout << x << "fun\n";
}
};
class Pochodna1 : virtual public Bazowa
{
public:
Pochodna1() : Bazowa(101) {}
};
class Pochodna2 : virtual public Bazowa
{
public:
Pochodna2() : Bazowa(103) {}
};
class SuperPochodna : public Pochodna1, public Pochodna2
{
public:
SuperPochodna() : {}
};
int main() {
SuperPochodna sp;
sp.fun(); // prints 55fun
return 0;
}
执行此程序后,它将打印“55fun”。类 Pochodna1 和 Pochodna2 中的构造函数调用发生了什么——它们被忽略了吗?为什么 Bazowa 类的成员 'x' 设置为 '55',而不是 '101' 或 '103'?
最佳答案
虚基构造函数总是从最终叶类中调用。没有调用虚拟基的其他构造函数。在您的情况下,SuperPochodna()
正在调用 Bazowa()
并在 Pochodna1
中调用 Bazowa(int)
和Pochodna2
未使用。
参见 http://www.parashift.com/c++-faq-lite/multiple-inheritance.html#faq-25.14或者只是谷歌“虚拟基础构造函数”。
关于c++ - 基类的多重虚继承和构造函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047739/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!