C++构造函数不调用

Asa*_*sap 2 c++ constructor

#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)

为什么在这个程序中它没有调用构造函数?

谁能解释一下?
.......

jua*_*nza 5

问题是你在这里声明一个函数:

// 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变量初始化中查看有关变量初始化的更多信息- 或者是它?.