}
return0;
}
调
试
过
程
及
实
验
结
果
运算符重载
1、类中运算符重载(以负号运算符成员函数重载为例)
2、友元函数重载(以负号运算符友元函数重载为例)
3、特殊运算符的重载(++运算符重载(前置++))
4、特殊运算符的重载(++运算符重载(后置++))
模板与STL
1、函数模板与模板函数
(例一)
(例二)
2、类模板与模板类的应用:
总
结
运算符的重载:
(以下代码仅为说明总结知识点,并不完整,具体编程示例见面两版块)
概念:
给原有的运算符赋予新的功能;(eg:
+是用于两个数字相加,我们会用+做两个字符串的拼接:
+的重载)
例1:
intmain(){
stringstr1("jamed");
stringstr2("yuan");
stringstr3=str1+""+str2;//用+连多个字符串,使其拼接为一个串
cout<return0;
}
本质:
函数重载
关键字:
operator
一元运算符重载例子:
-(负号)的重载++符号的重载
(一元:
此符号只与一个操作数进行运算,+为二元运算符)
-(负号)的重载:
友元函数重载、成员函数重载
例2:
(-(负号)成员函数的重载)
classCoordinate{//定义
public:
Coordinate(intx,inty);
Coordinate&operator-();
private:
intm_iX;intm_iY;
};
Coordinate&Coordinate:
:
operator-(){//实现
m_iX=-m_ix;m_iY=-m_iY;
return*this;
}
intmain(){//使用
Coordinatecoor1(3,5);//先定义Coordinate对象
-coor1;//coor1.operator-();
//在对象前加-,此对象中所有值均取反
return0;
}
//语法:
类名&+operator+运算符+();
例3:
(-(负号)友元函数的重载)
classCoordinate{
friendCoordinate&operator-(Coordinate&coor);
public:
Coordinate(inrx,inty);
private:
intm_iX;intm_iY;
};
Coordinate&operator-(Coordinate&coor){
coor.m_iX=-coor.m_iX;
coor.m_iY=-coor.m_iY;
return*this;
}
intmain(){
Coordinatecoor1(3,5);
-coor1;//operator-(coor1);
return0;
}
++符号的重载:
前置++符号重载、后置++符号重载
例4:
++运算符的重载—前置
classCoordinate{
public:
Coordinate(inrx,inty);
Coordinate&operator++();//前置++
private:
intm_iX;intm_iY;
};
Coordinate&Coordinate:
:
operator++(){
m_iX++;m_iY++;
return*this;
}
intmain(){
Coordinatecoor1(3,5);
++coor1;//coor1.operator++();
return0;
}
例5:
++运算符的重载—后置
cla