注册 登录
编程论坛 C++教室

这个简单的程序怎么改

o0花生0o 发布于 2007-10-19 00:30, 1021 次点击
#include<iostream.h>
class point
{
public:
int x,y;
private:
point()
{x=1;y=2;}
};
void main()
{
point cpoint;
cpoint.x=2;
}
我初学c++不知道上面这个程序错在哪里,该怎么改,希望高手不吝赐教
15 回复
#2
coding2007-10-19 09:16


private:--------->public:
构造函数最后放在成public类型

#3
zhaozhiwei2007-10-19 10:44

嗯 二楼说得对 构造函数是类的接口,必须设为public 还有 int x,y数据成员最好设为private 保证安全性嘛
好像cpoint.x=2;不能直接赋值把

#4
xskowscut2007-10-19 13:05
构造函数不能为private,因为在类的外部不能访问类的private成员,所以声明对象时就不能调用构造函数,无法初始化成员,但是3楼同志有点错,如果x在public那里的话一定可以赋值。
#5
yoapple2007-10-19 18:28
?????!!!!
#6
孤魂居士2007-10-19 22:25
楼上的
#7
zhaozhiwei2007-10-20 14:03
嗯  4楼说得对 数据成员若为public 是可以直接引用的~  思维惯性 不好意思
#8
fanerw2007-10-20 15:23
我们不说这个小程序的意思.

单就C++语法来说,只要把构造函数point()放到公有部分就可以了.

但如果是要这个类有意义,我进行如下改造。高手勿怪我无变数,我乃是用教课书之法。
#include<iostream.h>
class point
{
public:
setpoint(int &a,int &b){x=a;y=b;}
point(){x=1;y=2;}
private:
int x,y;
};
void main()
{
point cpoint;
cpoint.setpoint(2,3);
}
#9
jxnuwy042007-10-22 13:05
lz好像对class成员的访问级别还不够了解啊。
#10
nuciewth2007-10-22 14:20
构造函数也有私有的
回去看看书啦.
#11
胡桂生2007-10-22 20:03
“cpoint.x=2;”
对数据成员尽量不要这样赋值,最好写个方法,比如说8楼。
#12
yanyananlin2007-10-23 21:12

顶楼上的

#13
wolf7772007-10-23 22:10

对照课本编了。。。

#14
xindeluoye2007-10-23 22:32
以下是引用胡桂生在2007-10-22 20:03:32的发言:
“cpoint.x=2;”
对数据成员尽量不要这样赋值,最好写个方法,比如说8楼。

why?在下也是初学问一下

#15
neufcl2007-10-24 10:48
以下是引用fanerw在2007-10-20 15:23:36的发言:
我们不说这个小程序的意思.

单就C++语法来说,只要把构造函数point()放到公有部分就可以了.

但如果是要这个类有意义,我进行如下改造。高手勿怪我无变数,我乃是用教课书之法。
#include<iostream.h>
class point
{
public:
setpoint(int &a,int &b){x=a;y=b;}
point(){x=1;y=2;}
private:
int x,y;
};
void main()
{
point cpoint;
cpoint.setpoint(2,3);
}

这个是错的。const型的值是没有引用类型的
应改为 int i=2;int j=3;cpoint.setpoint(i,j);
另外既然学C++头文件就该用C++的格式,尽量不要用c的
还就是构造函数这样写更好、更合理
point(int a=1,int b=2){x=a;y=b;}

#16
q3637425332007-10-26 12:47
private: 的构造函数 不能被外部调用 需改成public:
1