#include<iostream>
using namespace std;
class base {
public:
base() {
cout<<"Constructing base \n";
}
virtual ~base() {
cout<<"Destructing base \n";
}
};
class derived: public base {
public:
derived() {
cout<<"Constructing derived \n";
}
~derived() {
cout<<"Destructing derived \n";
}
};
int main(void) {
derived d();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么在这个程序中它没有调用构造函数?
谁能解释一下?
.......
问题是你在这里声明一个函数:
// function d(), returns a derived object.
derived d();
Run Code Online (Sandbox Code Playgroud)
你需要的是什么
derived d; // C++03, C++11
Run Code Online (Sandbox Code Playgroud)
要么
derived d{}; // C++11 only
Run Code Online (Sandbox Code Playgroud)
这是C++的一个"有趣"方面,其中任何可以被解析为函数声明的东西都是(假设它位于可以声明函数的上下文中).
在GoTW#1变量初始化中查看有关变量初始化的更多信息- 或者是它?.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |