C ++将对象设置为默认参数(这是引用)

时间:2018-10-13 10:52:26

标签: c++ function reference

我一直在寻找答案,但是我什么也找不到。我的编译器没有给我任何错误或警告,但是这样做可能会有任何危险:

class Dog
{
   Dog(): x(0) {}
   int x;
};

如果我有一个简单的类,请在另一个类中创建一个函数,如下所示:

class PetHouse
{
    void addDog(Dog& animal = Dog())
    {
       // Anything...
    }
};

addDog()声明正确吗?我有一个参数,它是一个引用,它的默认值是Dog()对象,而不是现有的对象。

有危险吗?

感谢阅读!

1 个答案:

答案 0 :(得分:2)

不,不是。它甚至不应该编译,因为非常量左值引用不会绑定到./a.out | tee output.log之类的临时对象。

@StoryTeller暗示,您可能正在使用没有Dog()的MSVC。