首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求详细解释一下类的构造函数的一个有关问题

2012-04-06 
求详细解释一下类的构造函数的一个问题“当类中的构造函数被定义为私有控制访问时,就不能使用new操作符来定

求详细解释一下类的构造函数的一个问题
“当类中的构造函数被定义为私有控制访问时,就不能使用new操作符来定义一个对象了”,怎么来解释这句话。

[解决办法]
new不是两个功能吗,1.分配内存,2.调用构造函数构造对象。
[解决办法]
定义了一个类pcf,
其构造函数声明为Private的,创建对象时报错:

错误1error C2248: “pcf::pcf”: 无法访问 private 成员(在“pcf”类中声明)

[解决办法]

探讨

引用:

引用:
new不是两个功能吗,1.分配内存,2.调用构造函数构造对象。

那么如果不用new操作符来定义一个对象,而是直接定义,比如A a,这样,会有问题吗?


没有问题
但是同样只能够在 可以访问私有函数 的函数 里面来生成类的实例。
比较绕口,希望我能说明白。。。:)

[解决办法]
#include <iostream>
using namespace std;

class A
{
public:
A(){}
private:
A(int val){i=val;}
int i;
};

int main()
{
A a;
return 0;
}

编译成功
[解决办法]
探讨

引用:
“当类中的构造函数被定义为私有控制访问时,就不能使用new操作符来定义一个对象了”,怎么来解释这句话。


个人感觉这句话不太严谨。
将构造函数设置为私有,实例的创建就只能在能够访问类私有函数的对象、类了。比如类对象,或者友元类对象了。

[解决办法]
singleton模式

热点排行