c++中类中私有成员的调用?
天蓬老师
天蓬老师 2017-04-17 13:42:40
0
8
535
#include <iostream>
using namespace std;
class test{
      private:
            int a;
            int b;
      public:
            test(int a = 1, int b = 2){
                  this->a = a;
                  this->b = b;
            }
            int re(test ccc){
                  a = ccc.a + 444;
                  b = ccc.b + 444;
            }
};

为什么re函数中的ccc可以直接调用a和b而不报错?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(8)
刘奇

搜了下(关键字:c++访问类私有变量),这里有不错的解释:

http://stackoverflow.com/questions/7396846/with-a-private-modifier-why-can-the-member-in-other-objects-be-accessed-directl

好问题。要点是 C++ 中的保护是类级别的,而不是对象级别的。因此,在一个对象上调用的方法可以访问同一类的任何其他实例的私有成员。

如果您看到保护的作用是允许封装以确保类的编写者可以构建内聚的类,并且不必防止外部代码修改对象内容,那么这是有道理的。

关于真正的“为什么?”的另一个想法。考虑一下您如何编写几乎所有复制构造函数;您想要访问原始的底层数据结构,而不是其呈现的界面。

洪涛

因为 C++ 中一个类是自己这个类的友元(friend class)。

小葫芦

因为 a,b 都是 test 类的成员。

阿神

一个类的方法可以访问自己的私有成员

迷茫

同一类的不同对象间可以互相访问私有成员

Ty80

一个类里当然可以

洪涛

私有数据不能被直接访问,只能通过类的成员函数和友元函数调用。

大家讲道理

友元函数 http://learn.jser.com/cplusplus/cpp-friend-functions.html

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!