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
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。