C++类中的有元理解
来源:互联网 发布:mac鼠标滚轮设置 编辑:程序博客网 时间:2024/06/05 14:28
关于C++ 中有元函数的理解
class A{private: int a;int b;public:A(){a = 3;b = 5;}void funA();};class B{private:int x;int y;public:B(){x= 1;y =2;}friend void A::funA();friend void fun()//在进行有元定义的同时也进行函数的定义,而fun 函数在此之前没有任何声明,而这个函数的作用域和这类的作用域是一样的。{B tmp;tmp.x = 3;tmp.y = 4;}friend class C;//这个也同样,进行了类的声明。但是C只是声明还未定义,所以不能够使用。};void A::funA(){B tmp;tmp.x = this->a;//这里对B 中的私有成员的值进行了修改。tmp.y = this->b;cout <<"x = "<<tmp.x<<" y="<<tmp.y<<endl;}
首先有元的目的是 给特权,让外部的函数或则其他的类能够访问本类中的私有成员。
那么这有两个问题要解决
一 在定义有元之前,也就是给特权之前,被给予特权的函数或者类要存在(A);
二 有特权的函数或者类——A,在定义的时候肯定要用给它特权的那个类(B类),甚至对B类对象的私有成员有操作,那么在这之前,B类也要存在。
所以这就要求
在B 定义给A特权之前——其实就是在B 中进行有元定义(friend void A:: funA()),要对A 进行声明(如果A类中的成员函数,那么这是必须的)。
但是A的定义要在B 类定义以后,这样可以保证,在A定义的时候,对 B 中对象的使用是有效的,B类是存在的。
在这有1点说明一下:
如果A 是类和一般的函数(不是类中的成员函数),可以不预先声明,在进行有元定义的时候已经达到声明的作用,可以像预先声明一样使用,但是我个人还是建议在进行有元定义之前进行声明或者类的定义。
- C++类中的有元理解
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- 深刻理解Python中的元类(metaclass)
- php5.3动态编译gd库 zlib扩展 mcrypt扩展 mysqli扩展
- bundle开发----数据库访问(基于MySQL)
- PowerDesigner画ER图详细教程
- MSP430F149利用JTAG以及BSL下载配置图解!
- 网站头部回弹广告js代码
- C++类中的有元理解
- 简易实现, txt文件显示在html上
- QT 强止杀进程
- visual studio 2010 又学一招
- 正则表达式口诀及教程
- oracle异常:ORA-27101: shared memory realm does not exist ;ORA-03113: 通信通道的文件结尾(错误解决)
- jQuery-强大的jQuery选择器 (详解)
- VC强止终止进程
- Eclipse快捷键大全