友元
作用
可以访问其私有成员
特点
单向性
不能被传递
不能被继承
关键字
friend
分类
友元全局函数:当前函数中可以使用友元的那个类的私有成员
友元成员函数:当前函数中可以使用友元的那个类的私有成员
友元类:如果B是A的友元类,那么B中可以任何一处都可使用A的私有成员
友元全局函数
#include<iostream>
using namespace std;class A{// 友元全局函数friend void method(A& a);private:int x;public:A(int x):x(x){}};void method(A& a){cout << a.x << endl;}int main(int argc, char const *argv[]){A a1(10);A a2(1);method(a2);return 0;}
友元成员函数
#include <iostream>#include <stdlib.h>#include <string.h>using namespace std;class Mouse;// 声明老鼠类class Cat{private:char *name;public:Cat(){name = (char *)calloc(50,1);}Cat(char *name){this->name = (char *)calloc(50,1);strcpy(this->name,name);}void work(Mouse& m);};class Mouse{friend void Cat::work(Mouse& m);private:char *name;public:Mouse(){name = (char *)calloc(50,1);}Mouse(char *name){this->name = (char *)calloc(50,1);strcpy(this->name,name);}};void Cat::work(Mouse &m){cout << name << " 抓 " << m.name << endl;}int main(int argc, char const *argv[]){Mouse m(" 碎怂 ");Cat c(" 二蛋 ");c.work(m);return 0;}
友元类
#include <iostream>using namespace std;class B;// 声明 B 类class A{friend class B;private:int x;public:A(int x):x(x){}};class B{public:void method01(A &a){cout << a.x << endl;}void method02(A &a){cout << a.x << endl;}void method03(A &a){cout << a.x << endl;}};int main(int argc, char const *argv[]){A a(1);B b;b.method03(a);return 0;}
string
概念
c++提供的一个对字符串处理的类
所需头文件
string
使用
1.创建对象
string 对象名="值";
2.可以使用cout输出<<
3.可以使用cin输入>>
4.可以使用+或+=拼接
5.可以使用==判断字符串内容是否相同
6.对象名.length()可以获取字符串长度,不包含\0