【发布时间】:2011-11-11 03:56:51
【问题描述】:
假设我有一个带有一些 const 引用 成员变量的类,我想禁止某种类型的构造。所以我会声明相应的构造函数private。当然,构造函数必须初始化类的所有 const reference 成员变量。但是,这样做会导致代码看起来很奇怪:
class A {
};
class B {
B(const A& a): host(a) {}
private:
B():host(A()) {} // This is ugly and not needed !!
const A& host;
};
除了将构造函数声明为私有之外,还有其他方法可以禁止某种构造类型吗?我不想让编译器为我写一个构造函数。
【问题讨论】:
-
@Jon:天哪,太好了!我养成了将实现直接放入类定义的坏习惯。声明但不定义构造函数就可以了!非常感谢!
-
@Mat Hmm.. 你在我的问题中编辑了什么(以及为什么)?
-
点击edited x minutes ago链接查看您问题的编辑历史。我刚刚将
ctor扩展为一个完整的单词以匹配您的其余文本。如果您想返回ctor,可以点击其中的“回滚”链接。 -
好的,这个问题得到了回答(超出了我的要求)非常感谢大家!乔恩和纳瓦兹是第一个。乔恩删除了他的回答。所以,我想他不介意这一点,这一点归于纳瓦兹。但是,非常感谢 Martinhno 提供的 c++11 解决方案
标签: c++ construction