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;
}
C++中explicit关键字的作用
博客提到在C++里,类point p能接受整数2的值并正确运行,但这种隐式转换有时会带来意外后果。explicit关键字可避免此类情况,作者认为了解该关键字即可,不必深究,按特定方式编写代码就行。
22万+

被折叠的 条评论
为什么被折叠?



