新微赢技术网
标题:
请教个关于构造函数的问题!
[打印本页]
作者:
阳光aiq浪子
时间:
2009-11-3 03:52
标题:
请教个关于构造函数的问题!
#include<iostream.h>
class A{
public:
int x,y;
private:
A(){x=1;y=2;}
};
void main()
{
A a;
a.x=2;
}
请问这个程序的构造函数定义为私有成员为什么就错误?请高手们帮忙!
作者:
゛,
时间:
2009-11-3 03:52
这个。。。
实际上,你在写
A a;
这句话的时候,调用了class A 里面的 A(){x=1;y=2;}这个函数,而它又是私有的,就出错啦
作者:
欧阳风
时间:
2009-11-3 03:52
把构造函数放在private区段...限制对象创建........
作者:
seeYa
时间:
2009-11-3 03:52
那就是说不管私有成员里面是什么样的成员,用对象去调用都是错的了!是这样么?
作者:
笨笨洋葱
时间:
2009-11-3 03:52
原帖由 [bold][underline]小说贝斯[/underline][/bold] 于 2008-1-4 23:37 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1171507&ptid=195933][/url]
那就是说不管私有成员里面是什么样的成员,用对象去调用都是错的了!是这样么?
是这样的。
作者:
大师傅
时间:
2009-11-3 03:52
A a
这一句 在类外使用了私有成员就会出错!
作者:
♀鈊亂ゞ鎵伙
时间:
2009-11-3 03:52
基本上可以这样说
但是也有人说可以将private里面的东西弄出来
包括#define private public什么的
对于私有成员只能为该类的成员函数调用(构造函数为的是让别人使用该类,所以没有看见过将其私有的)
对于一些中间函数可以私有化,这就是C++的安全性
作者:
林枫
时间:
2009-11-3 03:52
LS似乎看过《expectional C++ style》~
作者:
太阳神
时间:
2009-11-3 03:53
构造函数是在创建类对象时调用的,你把它定义为私有的。在创建类对象时调用一个类的私有函数但然是错误的了。
作者:
妊嫒ぞ流逝
时间:
2009-11-3 03:53
你可以用静态函数去初始化.
#include<iostream.h>
class A{
public:
int x,y;
private:
static A* _instance;
private:
A(){x=1;y=2;}
public:
static A *instance();
};
A *A::_instance=0;
A *A::instance()
{
if(_instance==0) { _instance=new A();}
return _instance;
}
void main()
{ A *p;
p=A::instance();
cout<<p->x;
}
希望我们都可以从例子当中得到提高.这个是2004年的软件考试的下午题目,有点像.
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2