首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么要显式删除构造函数?

为什么要显式删除构造函数?
EN

Stack Overflow用户
提问于 2018-04-13 10:12:07
回答 2查看 0关注 0票数 0

代码:

代码语言:javascript
复制
class Foo
{ 
  public: 
    Foo() = delete; 
};
EN

回答 2

Stack Overflow用户

发布于 2018-04-13 18:48:46

代码:

代码语言:javascript
复制
//deleted constructor
class Foo
{ 
  public: 
    Foo() = delete;     
  public:
    static void foo();
};

void Foo::foo()
{
   Foo f;    //illegal
}

代码语言:javascript
复制
//private constructor
class Foo
{ 
  private: 
    Foo() {}     
  public:
    static void foo();
};

void Foo::foo()
{
   Foo f;    //legal
}
票数 0
EN

Stack Overflow用户

发布于 2018-04-13 20:07:59

我遇到了在LLVM的源代码中声明为'deleted'的默认ctors(例如在AlignOf.h中)。关联的类模板通常位于名为'llvm :: detail'的特殊名称空间中。我认为那里的全部目的是他们认为那个阶级只是作为辅助阶级而已。他们从未打算实例化它们。只有在其他类模板的上下文中使用它们,才能在编译时运行一些元编程技巧。

例如:有AlignmentCalcImpl类模板,该模板仅在名为AlignOf的另一个类模板中用作sizeof(。)运算符的参数。该表达式可以在编译时进行评估, 并且不需要实例化模板 。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档