C++这里为什么可以直接访问私有成员?

lllll.....lllll 2019-06-04 04:42:40
这里的c2.a和c2.b为什么可以直接访问私有成员?
#include <iostream>
#include <string>
using namespace std;
class Complex{
public:
Complex(double a=0,double b=0);
void add(Complex & c2);
void show(){cout<<a<<"+"<<b<<"i";};
private:
double a;
double b;
};
Complex::Complex(double a,double b){this->a=a,this->b=b;};
void Complex::add( Complex & c2 ) {
a+=c2.a;
b+=c2.b;
}
void main(){
Complex c1(3,5);
Complex c2=4.5;
c1.add(c2);
c1.show();
}
...全文
587 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿色盒子 2019-06-06
  • 打赏
  • 举报
回复
引用 6 楼 lllll.....lllll 的回复:
哦哦,一开始我以为引用了Complex & c2这个对象是调用一个具体的Complex对象c2来访问它的私有成员,其实就是这个引用的对象是抽象的在成员函数的内部,是成员函数的一部分,可以访问类的私有成员,这样理解对不?谢谢各位的解答。


越说越乱,简单的事用这么拗口的解释,这和对象在哪根本没关系,只和私有变量在哪有关系,它只能内部是用,外面的人想用的进来用,私有财产一律不外借
636f6c696e 2019-06-06
  • 打赏
  • 举报
回复
成员函数不能访问私有成员,那这个私有成员还有什么用呢
引用 6 楼 lllll.....lllll 的回复:
哦哦,一开始我以为引用了Complex & c2这个对象是调用一个具体的Complex对象c2来访问它的私有成员,其实就是这个引用的对象是抽象的在成员函数的内部,是成员函数的一部分,可以访问类的私有成员,这样理解对不?谢谢各位的解答。
lllll.....lllll 2019-06-06
  • 打赏
  • 举报
回复
哦哦,一开始我以为引用了Complex & c2这个对象是调用一个具体的Complex对象c2来访问它的私有成员,其实就是这个引用的对象是抽象的在成员函数的内部,是成员函数的一部分,可以访问类的私有成员,这样理解对不?谢谢各位的解答。
jiht594 2019-06-06
  • 打赏
  • 举报
回复
先明白什么是类内和类外
成员是类的成员、在类内都可以用。
类外才不行.如这样才是类外 A a; a.a;
jlennonxzy 2019-06-05
  • 打赏
  • 举报
回复
楼上说得对,是因为在类内部。
怪咖 °Weirdo 2019-06-04
  • 打赏
  • 举报
回复
Complex & c2 这个你创建了个对象,通过对象c2调用了私有成员
abc1138067661 2019-06-04
  • 打赏
  • 举报
回复
通过共有成员访问私有
lin5161678 2019-06-04
  • 打赏
  • 举报
回复
首先 你得搞清楚 什么叫做 类外部
gouyanfen 2019-06-04
  • 打赏
  • 举报
回复
私有说的就是对与类本身而言,类函数定义都不可以访问私有成员,那私有成员什么时候用呢? 私有是对类外直接访问不可见,函数void Complex::add()是类成员函数定义在类内部。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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