class Foo {
public:
Foo() { Foo(1)}
Foo(int x, int y = 0):i(x) {}
private:
int i;
}
任何人都可以给我一些关于我可以这样做的理由吗?如果不是,为什么?
最佳答案
因为语言规范不允许。语言就是这样。如果您习惯使用 Java 或其他允许它的语言,那将非常烦人。但是,一段时间后您就会习惯它。所有语言都有其怪癖,这只是 C++ 的其中一种。我相信规范的编写者有他们的理由。
我发现最好的解决方法是创建一个通用的初始化函数并让两个构造函数都调用它。
像这样:
class Foo {
public:
Foo() {initialize(1);}
Foo(int nX) { initialize(nx); }
private:
void initialize(int nx) { x=nx; }
int x;
};
关于c++ - 为什么一个 ctor 不能调用另一个 ctor 来初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456862/