1、友元函数

在类中一般的成员函数具备:

(1)、该函数能访问类中的私有部分;

(2)、该函数位于类的作用域之中;

(3)、该函数必须经由一个对象去激活,也就是说有一个this指针。

友元函数不同之处:

(1)、

在#include using namespace std; 的前提下,必须的类外先声明;

class Test;
void fun(); //有元函数的声明

但是在#include中不用这个有元函数的声明;这是早期头文件的包含。

(2)、在类内必须声明是朋友,friend(关键字),函数声明

class Test{
friend void fun(); //朋友没有公有,私有,保护之分,所以限定修饰符在这不起任何作用
}

(3)、在类外实现方法的定义,此时不用再加friend了;

void fun(){
..........
}

有元函数具有的特性:该函数能访问类的私有数据;不是该类的成员函数,也不需要对象驱动;

符桂花和符跃兰是什么关系_重载运算符_与运算和或运算规则

还有友元类重载运算符,跟其使用一样,类中所有函数均可调用其朋友的私有数据;

2、运算符的重载(个人认为C++中运算符的重载很有用,也很重要)

相当于函数的调用,对其的另一种更加人文化的解释,并告诉 C++编译器重载运算符,遇到该重载运算符时调用此函数。

定义运算符重载的一般格式:

返回值类型 类名::operator重载的运算符(参数列表);

假如出现复数类:

    Complex{
public:
.....
private:
int real;
int p_w_picpath;
}

    //主函数中:
Complex t1(1, 2);
Complex t2(2, 3);
Complex t3;
t3 = t1 + t2;

此时t1和t2的类型不定,就得对+进行运算符的重载;使其更符合人文化,其本质不变,t1.operator+(t2);

对象的类型不定,编译器不知道怎么输出,自己就得对运算符进行重载,以达到输出对象的目的。还必须是友元函数;

class Complex;    //这是第一步,类外声明。
ostream& operator<<(ostream &out, const Complex &c);
istream& operator>>(istream &in, Complex &c);

class Complex{ //这是第二步,对其在类内说明是朋友。
friend ostream& operator<<(ostream &out, const Complex &c);
friend istream& operator>>(istream &in, Complex &c);
};

ostream& operator<<(ostream &out, const Complex &c){
out<<"("<<c.m_real<<","<<c.m_imag<<")";
return out; //这是第三步,在类外进行定义。
}
istream& operator>>(istream &in, Complex &c){
in>>c.m_real>>c.m_imag;
return in;
}

关于这个

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688