0

本质上,有什么区别:

const Date& default_date()
{
    static Date dd(2001,Date::Jan,1);
    return dd;
}

const Date default_date()
{
    static Date dd(2001,Date::Jan,1);
    return dd;
}

函数签名真的很重要吗?我不认为 Date& 是像 *Date 这样的类型,所以我不确定这有什么不同。它是否只是防止在退货时制作副本?但是你不会返回 &dd 吗?

4

1 回答 1

3

第一个函数返回对静态对象的 const 引用,因此您可以这样做:

const Date& d = default_date(); // d is a reference to the original

或者

Date d = default_date(); // d is a copy of the original, 
                         // provided there is a copy constructor

第二个复制static Date对象,所以你只能得到一个副本

Date d = default_date(); // d is a copy of the original

返回&dd将返回静态对象的地址,然后可以将其分配给指向Date. return 语句的语法与按引用返回或按值返回相同。语义取决于函数的返回类型。

请注意,在 C++ 中,诸如此类的函数default_date不称为构造函数。

于 2012-09-20T05:16:11.487 回答