|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 请教个关于构造函数的问题!
我的收件箱(0)
共有
2099
人关注过本帖
标题:
请教个关于构造函数的问题!
只看楼主
加入收藏
小说贝斯
等 级:
新手上路
帖 子:32
专家分:0
注 册:2007-8-4
楼主
收藏
问题点数:0 回复次数:14
请教个关于构造函数的问题!
#include<iostream.h>
class A{
public:
int x,y;
private:
A(){x=1;y=2;}
};
void main()
{
A a;
a.x=2;
}
请问这个程序的构造函数定义为私有成员为什么就错误?请高手们帮忙!
Standing on Shoulders of Giants
2008-01-04 21:40
举报帖子
使用道具
赠送鲜花
linsua
等 级:
新手上路
帖 子:275
专家分:0
注 册:2008-1-2
第
2
楼
收藏
得分:0
这个。。。
实际上,你在写
A a;
这句话的时候,调用了class A 里面的
A(){x=1;y=2;}这个函数,而它又是私有的,就出错啦
如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-04 22:10
举报帖子
使用道具
赠送鲜花
中学者
等 级:
版主
威 望:
20
帖 子:3554
专家分:80
注 册:2007-9-14
第
3
楼
收藏
得分:0
把构造函数放在private区段...限制对象创建........
樱花大战, 有爱.
2008-01-04 23:18
举报帖子
使用道具
赠送鲜花
小说贝斯
等 级:
新手上路
帖 子:32
专家分:0
注 册:2007-8-4
第
4
楼
收藏
得分:0
那就是说不管私有成员里面是什么样的成员,用对象去调用都是错的了!是这样么?
Standing on Shoulders of Giants
2008-01-04 23:37
举报帖子
使用道具
赠送鲜花
zhm412
等 级:
新手上路
帖 子:7
专家分:0
注 册:2007-9-30
第
5
楼
收藏
得分:0
原帖由 [bold][underline]小说贝斯[/underline][/bold] 于 2008-1-4 23:37 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1171507&ptid=195933]
[/url]
那就是说不管私有成员里面是什么样的成员,用对象去调用都是错的了!是这样么?
是这样的。
2008-01-05 04:20
举报帖子
使用道具
赠送鲜花
2003dfg
等 级:
新手上路
帖 子:1
专家分:0
注 册:2008-1-5
第
6
楼
收藏
得分:0
出错原因
A
a
这一句 在类外使用了私有成员就会出错!
2008-01-05 16:46
举报帖子
使用道具
赠送鲜花
phb711
等 级:
新手上路
帖 子:21
专家分:0
注 册:2007-11-16
第
7
楼
收藏
得分:0
回复 4# 的帖子
基本上可以这样说
但是也有人说可以将private里面的东西弄出来
包括#define private public什么的
对于私有成员只能为该类的成员函数调用(构造函数为的是让别人使用该类,所以没有看见过将其私有的)
对于一些中间函数可以私有化,这就是C++的安全性
By plucking her petals you do not gather the beauty of the flower.
2008-01-05 18:34
举报帖子
使用道具
赠送鲜花
中学者
等 级:
版主
威 望:
20
帖 子:3554
专家分:80
注 册:2007-9-14
第
8
楼
收藏
得分:0
LS似乎看过《expectional C++ style》~
樱花大战, 有爱.
2008-01-05 18:50
举报帖子
使用道具
赠送鲜花
随心
等 级:
版主
威 望:
12
帖 子:2585
专家分:275
注 册:2007-8-12
第
9
楼
收藏
得分:0
构造函数是在创建类对象时调用的,你把它定义为私有的。在创建类对象时调用一个类的私有函数但然是错误的了。
天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-01-06 16:49
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
10
楼
收藏
得分:0
你可以用静态函数去初始化.
#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年的软件考试的下午题目,有点像.
2008-01-06 20:45
举报帖子
使用道具
赠送鲜花
15
1/2页
1
2
快速回复:
请教个关于构造函数的问题!
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022426 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved