到目前为止,我知道如果您想将参数的默认值传递给作为对象的函数,您可以这样做:
void function(MyObject obj = MyObject()){
...
}
但是,我最近遇到了一些有趣的语法,这让我感到困惑。当我们这样调用函数时会发生什么?
void function(MyObject obj = 0){
...
}
注意,我们传递的是一个对象,而不是一个指针。上面的代码编译得很好,没有错误或警告。这总是用一个参数调用构造函数 - MyObject 定义如下:
class MyObject{
public:
MyObject(double n){std::cout << "Argumented\n";}
MyObject(){std::cout << "Default\n";}
};
另外,这种行为记录在哪里(因为我搜索并找不到它)?