class Point {
public:
int x, y;
Point(int x = 0, int y = 0)
: x(x), y(y) {}
};
int main()
{
Point a(1,2);
const Point& p = 2;
cout << "(" << p.x << ","<< p.y << ")" << endl;
}
output:
(2,0)
可以看到类point p接受了一个整数2的值,并且还可以正确运行打印出来。
这样悄悄发生的事情, 有时可以带来便利, 而有时却会带来意想不到的后果. explicit关键字用来避免这样的情况发生。
虽然我觉得没啥便利的。
感觉知道有这个东西就行了,不用太深究。
以后这样写就行了:
class Point {
public:
int x, y;
explicit Point(int x = 0, int y = 0)
: x(x), y(y) {}
};
int main()
{
Point a(1,2);
const Point& p = 2;
cout << "(" << p.x << ","<< p.y << ")" << endl;
}