我一直在寻找答案,但是我什么也找不到。我的编译器没有给我任何错误或警告,但是这样做可能会有任何危险:
class Dog
{
Dog(): x(0) {}
int x;
};
如果我有一个简单的类,请在另一个类中创建一个函数,如下所示:
class PetHouse
{
void addDog(Dog& animal = Dog())
{
// Anything...
}
};
addDog()声明正确吗?我有一个参数,它是一个引用,它的默认值是Dog()对象,而不是现有的对象。
有危险吗?
感谢阅读!
答案 0 :(得分:2)
不,不是。它甚至不应该编译,因为非常量左值引用不会绑定到./a.out | tee output.log
之类的临时对象。
@StoryTeller暗示,您可能正在使用没有Dog()
的MSVC。