【友元类】友元类的访问限制,只在静态编译时有效,在动态链接时,是不受限制的
来源:互联网 发布:软件招聘网 编辑:程序博客网 时间:2024/06/05 11:59
今天学习了一下友元类,在百度文库上看到了一篇文章,理解了一下,现在自己总结一下。
①A是B的友元类,所以A中能够访问B中的私有成员。
②D继承于B,但是友元并不继承,所以在A中不能访问D的私有成员。
但是对于②,只在进行静态编译的时候,A不能访问D的私有成员;如果A中调用的方式,是在运行时链接的,则可以实现在A中访问D的私有成员。
#include "stdafx.h"#include <iostream> using namespace std; class B{ friend class A;private: virtual void Print() { std::cout << "B" << std::endl; }}; class D:public B{private: virtual void Print() { std::cout << "D" << std::endl; }};class A{public: A() { B b; std::cout << "A Constructor:"; b.Print(); //D d;//此处,由于A不是D的友元类,因此,静态编译的时候,是报错的。 //d.Print(); } void Print(B &b) { std::cout << "A-->"; b.Print(); }};int _tmain(int argc, _TCHAR* argv[]){ A a; B b; D d; a.Print(b); a.Print(d);//此处虽然A不是D的友元类,但是,由于D继承B,并且将B的Print函数进行了重载,因此此处只有在运行时,才会进行连接(及我们称的<运行时连接,动态连接>),这里我们可以看到,程序能够正常运行,结果也是对的。 return 0;}
输出结果为:
A Constructor:B
A-->B
A-->D
由此,我们得出结论:友元类的访问限制,只在静态编译时有效,在动态链接时,是不受限制的。
- 【友元类】友元类的访问限制,只在静态编译时有效,在动态链接时,是不受限制的
- 在一定的时间内限制访问次数
- 用PHP限制网页只允许在微信自带浏览器访问的技巧
- eclipse建工程时,出现“在项目中具有不受限制的类路径容器:JRE系统库”错误
- “为了能够访问动态链接库中的位图资源,在编译动态链接库时,需要使用MFC静态库”
- 在PHP里Cookie的使用是有一些限制的。
- 限制页面请求在一定时间内的访问次数
- nginx limit_req限制ip在同一时间段的访问次数
- 在ECLIPSE导入项目后提示::具有不受限制的类路径容器:“JRE 系统库 [JVM 1.6.0]”
- 一个在拷贝动态库时有用的cp -d ,让你保留链接文件
- VC++访问HTTPS服务器(不受限制)
- 自己在linux上编译、链接、动态库和静态库的学习笔记
- 自己在linux上编译、链接、动态库和静态库的学习笔记
- 访问限制的问题
- IP的限制访问
- 两个大数相乘的问题(只限制是正整数)
- 在域控上限制用户只允许登陆到指定的客户端计算机
- [水晶报表]创建不受数据库限制的报表(1)
- 用const修饰函数 以及引起的附加限制
- 浅析调用android的content provider(二)
- 几个问题
- c 语言宏
- hdu 3835 R(N)
- 【友元类】友元类的访问限制,只在静态编译时有效,在动态链接时,是不受限制的
- hdu 3829 Cat VS Dog
- Android中的用户词库——UserDictionry
- POJ 2309 BST
- NIT 1464
- Java类、继承、多态
- C# 拖放操作源码详解
- Struts2数据传输的背后机制:ValueStack(值栈)
- 【错误】android invalid command-line parameter: Files. Hint: use '@foo' to launch a virtual device name