【发布时间】:2013-10-24 21:37:37
【问题描述】:
有什么办法不允许在友元函数中进行私有构造,以防我们的类中有带友元函数的私有构造函数。只有静态方法应该负责对象的创建,除了这个编译器应该闪烁错误消息
#include <iostream>
#include <memory>
using namespace std;
class a
{
public:
void see ()
{
cout<<"Motimaa";
}
static a& getinstance()
{
static a instance;
return instance;
}
private:
a() {};
friend void access();
};
void access ()
{
a obj;
obj.see();//still friend function can access
}
int main()
{
a::getinstance().see();
access();
return 1;
}
【问题讨论】:
-
没有。当你把它变成朋友时,你认为这个函数做的是正确的事情。它可以乱写你的私有变量;如果您不信任它的实现,那么通过私有构造函数创建对象应该是您最不必担心的。
标签: c++ constructor private friend