Roo*_*kie 3 c++ visual-studio-2008 visual-c++
我有点惊讶在C++中发现这个功能,我没想到会发生这种情况.
这是代码:
struct XY {
int x,y;
XY(int v) : x(v), y(v) {}
};
bool test1(const XY &pos){
return pos.x < pos.y;
}
bool test1(int x, int y){
return x < y;
}
void functest(){
int val = 5;
test1(val);
}
Run Code Online (Sandbox Code Playgroud)
所以我可以调用一个带整数参数的函数,无论是否存在这样的重载,它都会使用XY类型函数,因为它有一个相同类型的构造函数!我不希望这种情况发生,我该怎么做才能防止这种情况发生?
使XY构造函数显式:
explicit XY(int v) : x(v), y(v) {}
Run Code Online (Sandbox Code Playgroud)
这将不允许隐式转换int到XY,这是当你调用单参数发生了什么test1功能.
| 归档时间: |
|
| 查看次数: |
166 次 |
| 最近记录: |