// Case A
class Point {
private:
int x;
int y;
public:
Point(int i = 0, int j = 0); // Constructor
};
Point::Point(int i, int j) {
x = i;
y = j;
cout << "Constructor called";
}
// Case B:
class Point {
private:
int x;
int y;
public:
Point(int i, int j); // Constructor
};
Point::Point(int i = 0, int j = 0) {
x = i;
y = j;
cout << "Constructor called";
}
问题&GT;案例A和案例B都可以在没有问题的情况下编译VS2010。
原文我假设只有案例A有效,因为我记得应该在声明函数的地方而不是其定义的位置引入默认参数。有人可以纠正我吗?
谢谢
答案 0 :(得分:0)
如果将默认参数放入方法定义中,那么只有看到定义的人才能使用默认参数。唯一的问题是如果你尝试过这样的事情:
public:
Point(int i = 0, int j = 0);
(...)
Point::Point(int i = 0, int j = 0) { ... }
然后你会得到一个构建时错误。
//编辑:但我很好奇Mark B.会在你的问题评论中提到的内容。
// EDIT2:显然clang编译器不喜欢Case B.