【发布时间】:2009-06-09 13:10:12
【问题描述】:
我有以下课程
class CItem
{
public:
CItem(CRegistry &Registry) _Registry(Registry) {Registry.Register();}
~CItem() {_Registry.Unregister()};
private:
CRegistry &_Registry;
}
一段时间后,事实证明并非所有 CItem 对象都需要注册,所以我需要一个 CItem 版本,它不需要在构造函数中注册(当然还有注册代码)。我该如何实施? 我在这里可以看到的唯一解决方案是获取注册表并将其保留为指针。有没有更优雅的解决方案,比如使用模板等(我不喜欢从引用切换到指针)?
【问题讨论】:
-
顺便说一句,标准保留带前导下划线的名称。
-
特别是以下划线和大写字母开头的名字!
-
详细说明:下划线后跟大写字母的名称在任何地方都保留。其他以下划线开头的名称仅保留在全局名称空间中,因此如果您坚持可以用于成员变量(并且不介意它们隐藏某些特定于实现的符号的可能性很小)。 17.4.3.1.2.
标签: c++ class constructor-overloading