到目前为止,我知道如果你想将参数的默认值传递给作为对象的函数,你可以这样做:
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";} };
此外,这种行为记录在哪里(因为我搜索并找不到它)?