| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2087 人关注过本帖
标题:请教个关于构造函数的问题!
只看楼主 加入收藏
小说贝斯
Rank: 1
等 级:新手上路
帖 子: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;
}
请问这个程序的构造函数定义为私有成员为什么就错误?请高手们帮忙!
搜索更多相关主题的帖子: 函数 构造 
2008-01-04 21:40
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
这个。。。
实际上,你在写
A a; 
这句话的时候,调用了class A 里面的  A(){x=1;y=2;}这个函数,而它又是私有的,就出错啦

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-04 22:10
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
把构造函数放在private区段...限制对象创建........

樱花大战,  有爱.
2008-01-04 23:18
小说贝斯
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-4
收藏
得分:0 
那就是说不管私有成员里面是什么样的成员,用对象去调用都是错的了!是这样么?

Standing on Shoulders of Giants
2008-01-04 23:37
zhm412
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-30
收藏
得分:0 
原帖由 [bold][underline]小说贝斯[/underline][/bold] 于 2008-1-4 23:37 发表 [url=http://bbs.][/url]
那就是说不管私有成员里面是什么样的成员,用对象去调用都是错的了!是这样么?

是这样的。
2008-01-05 04:20
2003dfg
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-1-5
收藏
得分:0 
出错原因
A  a

这一句 在类外使用了私有成员就会出错!
2008-01-05 16:46
phb711
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-11-16
收藏
得分: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
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
LS似乎看过《expectional C++ style》~

樱花大战,  有爱.
2008-01-05 18:50
随心
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:12
帖 子:2577
专家分:250
注 册:2007-8-12
收藏
得分:0 
构造函数是在创建类对象时调用的,你把它定义为私有的。在创建类对象时调用一个类的私有函数但然是错误的了。

天之道,利而不害。圣人之道,为而不争。信言不美,美言不信。善者不辩,辩者不善。知者不博,博者不知。
2008-01-06 16:49
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分: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
快速回复:请教个关于构造函数的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.055571 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved