是否有明确的副本

Cha*_*rly 2 c++ gcc explicit-constructor

我正在寻找这样的语法:

class Hugo
{
    Hugo();
    explicit Hugo( const Hugo& hugo );

    Hugo GetRandomHugo()
    {
        Hugo hugo;
        hugo.value = rand();
                                  // this would fail:
                                  //    return hugo;

        return Hugo(hugo);        // explicit copy!!
    }
};
Run Code Online (Sandbox Code Playgroud)

换句话说:我正在寻找一种显式的复制语法,以允许方法返回一个副本,即使我的复制构造函数是显式的.

我正在使用GCC 4.4.5.

非常感谢,

查理

ice*_*ime 5

您不能:按值返回是隐式复制构造.这里,返回尝试隐式复制显式复制构造的临时.

从8.5/12:

在参数传递,函数返回,抛出异常(15.1),处理异常(15.3)和大括号括起的初始化列表(8.5.1)中发生的初始化称为复制初始化,并且等效于以下形式:

T x = a;