【发布时间】:2014-10-08 15:37:18
【问题描述】:
假设我有以下代码:
class Example
{
#ifndef PRIVATE_DESTRUCTOR
public:
#endif
~Example() { }
public:
friend class Friend;
};
class Friend
{
public:
void Member();
};
void Friend::Member()
{
std::printf("Example's destructor is %s.\n",
IsDestructorPrivate<Example>::value ? "private" : "public");
}
是否可以实现上面的IsDestructorPrivate模板来判断一个类的析构函数是private还是protected?
在我正在使用的情况下,我需要使用此IsDestructorPrivate 的唯一时间是在可以访问此类私有析构函数(如果存在)的地方。它不一定存在。 IsDestructorPrivate 可以是宏而不是模板(或解析为模板的宏)。 C++11 很好。
【问题讨论】:
-
为什么要创建私有析构函数?
-
AFAIK 无法检查可访问性。理想情况下,您不应该编写依赖于此的代码。
-
@mohaned 可能有类似单身的行为?
-
@mohaned 这里是一个更好的答案:stackoverflow.com/q/631783/3093378
-
@mohaned -
why would you create private destructor?这样您就可以控制客户端如何创建/销毁您的类的实例。
标签: c++ c++11 destructor private