关于类数据成员调用的问题

xujinhang 2008-02-14 07:31:24
class Complex
{double real,imag;
public:
Complex() {real=0;imag=0;}
Complex(double r,double i) {real=r,imag=i;}
Complex add(const Complex& x) const
{Complex temp;
temp.real=real+x.real;
temp.imag=imag+x.imag;
return temp;
}
};
void main()
{Complex a(1,2),b(3,4),c;
c=a.add(b);
}
数据成员temp.real和temp.iamg不是类temp的私有成员吗?咋么可以直接被调用呢,而不是经过公有成员的调用呢?
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
不会,帮顶
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
什么呀
xujinhang 2008-02-15
  • 打赏
  • 举报
回复
有点绕,还是听得懂,谢谢
visame 2008-02-15
  • 打赏
  • 举报
回复
“就是同一类的不同对象可以调用对方的成员,是吗”
YES!!!
更准确的说法是:
“就是同一类的不同对象可以通过对方调用对方的成员”

听akirya的:
“因为成员的私有是相对于类的,不是对象。”

xujinhang 2008-02-15
  • 打赏
  • 举报
回复
就是同一类的不同对象可以调用对方的成员,是吗
dragonfly2008 2008-02-14
  • 打赏
  • 举报
回复
首先说数据成员temp.real和temp.iamg这种表述方式是错误的
只能说real和iamg是类complex的数据成员
其次,最好显示的声明public和private
class Complex
{
private:
double real,imag;
public:
Complex()
{
real=0;
imag=0;
}
Complex(double r,double i)
{
real=r;
imag=i;
}
Complex add(const Complex& x) const
{
Complex temp;
temp.real=real+x.real;///////////这里并不违反成员访问规则,类作用域内,temp对象和x对象分别调用各自的数据成员,声明为private的成员对于该类的对象是可见,对于外部函数和类(非友元)是不可见的/////
temp.imag=imag+x.imag;
return temp;
}
};

int main()
{
Complex a(1,2),b(3,4),c;
c=a.add(b);
}
  • 打赏
  • 举报
回复
因为成员的私有是相对于类的,不是对象
nobush 2008-02-14
  • 打赏
  • 举报
回复
公有成員函數呢

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧