小编Gla*_*tar的帖子

c ++ - 直接和复制构造函数

class UnusualClass
{
    int a;
    public:
        UnusualClass(int a){std::cout<<"Direct initialization"<<std::endl;}
        UnusualClass(const UnusualClass &n){std::cout<<"Copy initialization"; }
};


int main ()
{
    UnusualClass k1(5);    //Direct initialization
    UnusualClass k2=56;   //Copy initialization
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么编译器会打印两次"直接初始化"?我做了一些研究,发现我可能会得到复制构造函数elision.在这两种情况下,是否有可能获得两种不同的结果?此外,当我使用时,UnusualClass(const UnusualClass &n)=delete我得到一个错误说use of deleted function 'UnusualClass::UnusualClass(const UnusualClass&).如果它跳过这个构造函数,为什么我会得到这个错误?

我知道通过使用两个构造函数我可以得到两个不同的结果UnusualClass(int a);,UnusualClass(double b);但这个技巧似乎不太合适.

c++ constructor initialization class

5
推荐指数
1
解决办法
165
查看次数

标签 统计

c++ ×1

class ×1

constructor ×1

initialization ×1