先看一段代码。
#include <iostream>
using namespace std;
class A {
public:
A() {
cout << "A()" << endl;
}
~A() {
cout << "~A()" << endl;
}
};
class B : public A {
public:
B() {
cout << "B()" << endl;
}
~B() {
cout << "~B()" << endl;
}
B(int a) {
cout << "int a" << endl;
}
};
B func() {
cout << "A function" << endl;
return B();
}
int main() {
cout << "----1----" << endl;
B t();
cout << "----2----" << endl;
B();
//B b;
//B c(1);
return 0;
}
之前调用无参数的构造函数都是形如
B b;
的调用方式,有参数的就如
B c(1);
地去调用。
没试过B t();的调用方式,以为跟B t;的效果是一样的,其实不然。。
B t();相当于声明了一个返回值是B的函数,跟B的构造函数没半点关系。
所以,这段代码的输出为:
----1----
----2----
A()
B()
~B()
~A()