C++类的访问问题
来源:互联网 发布:ubuntu怎么装输入法 编辑:程序博客网 时间:2024/06/03 07:11
内容整理自:
关于类成员函数中访问同类对象的私有成员
为什么在拷贝构造函数里,可以直接访问另外一个对象的
C++ 的一个问题的理解(私有变量成员)
【C++】 私有成员变量的理解
C++中类访问权限控制:
第一:private, public, protected 访问标号的访问范围,在没有继承的情况下:
- private:只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问,该类的对象也不能访问。
- protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。 但不能被该类的对象访问。
- public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
第二:类的继承后方法属性变化,具体情况如下:
- private 属性是不能够被继承的,protected继承和private继承能降低访问权限;
- 使用private继承,父类的protected和public属性在子类中变为private;
- 使用protected继承,父类的protected和public属性在子类中变为protected;
- 使用public继承,父类中的protected和public属性不发生改变。
类成员函数中访问同类对象的私有成员,主要包含以下几种场景:
- 在C++的类的成员函数中,允许直接访问该类的对象的私有成员变量。
- 在类的成员函数中可以访问同类型实例的私有变量。
- 拷贝构造函数里,可以直接访问另外一个同类对象(引用)的私有成员。
- 类的成员函数可以直接访问作为其参数的同类型对象的私有成员。
关于类私有成员的访问,看到了一些常见问题:
在拷贝构造函数中为什么可以访问引用对象的私有变量?
class Point{public: Point(int xx=0,int yy=0){X=xx;Y=yy;} Point(Point &p);private: int X,Y;};Point::Point(Point &p){ X=p.X; Y=p.Y;}
解答为:
- 成员函数中允许访问对象的数据成员,一方面保证了安全性与封装性,另一方面提供方便的操作。只有成员函数可以访问私有成员,这里不涉及友元及派生。这样一来,安全性仍然得到了保证,也完成了封装工作。
- 私有是为了实现“对外”的信息隐藏。访问权限(如public,private)是对类而言,而不是对对象。private访问权限是其它类不能访问,而非这个类的不同对象不能访问。
- 在这个类的成员函数中的任何操作是对于这个类的所有对象都起作用的,对于类来说,所有的对象都是它的实例,因此都可以访问。
- 同类对象互为友元,在一个类的成员函数里面,可以访问该类另一个对象的私有成员。
关于C++的问题,类对象不能访问类私有数据成员
template <class T>class MyClass{private:T value;public:void assign(const MyClass<T>& x){value=x.value;}......};
对象只是不能在类的外部访问类的私有成员,比如MyClass<int> my; my.value就是在外部访问。
0 0
- C++类的访问问题
- c开发 一个关于访问性的问题
- 关于.net(C#)中的跨进程访问的问题
- c语言中关于“访问冲突”的问题
- C#MVC站点发布后只能访问首页的问题
- C语言结构体内存访问的问题
- c盘下安装的文件访问权限问题
- 类成员的访问控制(C++)
- c+中嵌套类的访问权限
- C++:类的成员访问权限控制
- [c++]派生类的访问控制
- C++类的访问权限问题
- 关于线程访问类成员的问题
- 继承类的访问权限问题
- 访问控制的问题
- 访问限制的问题
- arrayList 的访问问题
- 访问域的问题
- Linux系统目录树结构分析(Ubuntu 14.10 LTS)
- A - 食物链
- OpenCV2:Mat
- 一份C++线程池的代码(转)
- Android studio在函数头部添加说明性注释和参数的注释的快捷键
- C++类的访问问题
- 字典树专题-1001
- secureCRT for mac破解
- java的final关键字
- 程序员常用的编辑器
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- Openssl摘要算法接口函数使用
- hdu 5325 Crazy Bobo 附上证明 Multi-University Training Contest 3
- 使用IAT表注入模块到进程中 样例