C++ 基础知识八
来源:互联网 发布:java栈排列字符串 编辑:程序博客网 时间:2024/06/06 01:07
一.全局函数和成员函数
1.把全局函数转换为成员函数,通过this指针隐藏左操作数
2.成员函数转换为全局函数,多一个参数
#include <stdio.h>class Text1_1{public:Text1_1(int a){this->m_a = a;}void print(){printf("a = %d\n",m_a);}//全局函数转化为内部函数 通过this指针隐藏左操作数int add(Text1_1 &b){return (this->m_a + b.get());}int get(){return m_a;}private:int m_a;};//成员函数转换为全局函数//多一个参数int get(Text1_1 &obj){return obj.get();}//全局函数int add(Text1_1 &a, Text1_1 &b){return a.get() + b.get();}int main(){Text1_1 a(10);a.print();Text1_1 b(20);int c = a.add(b);printf("c = %d\n",c);return 0;}
二.友元函数和友元类#include <iostream> using namespace std; class Test{public: // 友元函数的声明与位置、public、private等都无关 // 友元函数不是类的内部函数,是一个全局的函数 friend void test(Test *pTest); Test(int a, int b) { this->a = a; this->b = b; } int getA() { return this->a; }private: int a; int b;}; void test(Test *pTest){ pTest->a = 10;} int main(){ Test a(2,3); test(&a); cout << a.getA() << endl; return 0;}
友元类:同友元函数一样,一个类可以将另一个类声明为友元类。若A类为B类的友元函类,则A类中的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员。例如:
class A{ public: int GetX() { return x; } friend class B;//B类是A类的友元类 //其它成员略 private: int x; }; class B{ public: void set(int i); //其他成员略 private: A a; }; void B :: set(int i){ a.x = i;//由于B类是A类的友元类,所以在B的成员函数中可以访问A类对象的私有成员 }
关于友元,需要注意的点:
友元关系不能传递
友元关系是单向的
友元关系不能被继承
阅读全文
0 0
- Objective-C 基础知识之(八):NSSet
- android 基础知识 八
- MakeFile基础知识(八)
- C#基础知识之八
- PS基础知识八
- Java基础知识(八)
- java基础知识(八)
- C++ 基础知识八
- C语言基础知识之(八):二维数组,二维字符串数组,代码安全
- 黑马程序员-------.net基础知识八
- C#基础知识(八)泛型
- java 基础知识八 正则表达式
- C 基础知识
- C 基础知识
- C基础知识
- C 基础知识
- c基础知识
- c基础知识
- C语言打印%
- Java BigDecimal详解
- 解决在windows下配置Matlab版本的DPM出现round函数重载错误的问题
- 解读我所认知的网络营销根源
- WKWebView自适应屏幕的一些经验
- C++ 基础知识八
- Android Studio 更换主题
- 初学者如何从零学习人工智能?看完你就懂了
- springmvc@RequestMapping的method请求方式
- 文章标题
- ceph 清除flashcache
- AlexNet深度卷积神经网络
- 顺舟智能:物联网在智慧建筑领域的应用正在不断加深
- 移植QT到QNX,QNX开发QT程序,QT图形开发环境搭建