18.成员函数返回“自引用”( *this)
#include <iostream>
using namespace std;
struct Date {
int d,m,y ;
void init(int dd,int mm,int yy) {
d = dd;
m = mm;
y = yy ;
}
void print() {
cout<< y <<"-" << m <<"-"<< d << endl;
}
//每个函数都知道是为了那个对象而使用,因此可以显示引用
Date& add(int dd){
d = d + dd;
return *this; //this是指向调用这个函数的类型对象指针
//*this就是调用这个函数的那个对象
//这个成员函数返回的是“自引用”,即调用这个函数对象本身
//通过返回自引用,可以连续调用这个函数
}
};
int main() {
Date day;
day.print(); //通过类Date对象day调用类Date的print方法
day.init(4,14,2000); //通过类Date对象day调用类Date的init方法
day. print(); //通过类Date对象day调用类Date的print方法
day.add(3);
day.add(5).add(7);
day.print() ;
return 0;
}
19.成员函数重载“运算符函数”--在一个类里可以进行多个同名的函数。
#include <iostream>
using namespace std;
struct Date {
int d,m,y;
void init(int dd,int mm,int yy) {
d = dd;
m = mm;
y = yy;
}
void print () {
cout << y << "-" << m << "-"<< d << endl;
}
Date& operator+=(int dd){ //重新定义一个+的运算符
d = d + dd;
return *this;
}
};
int main() {
Date day;
day.print(); //通过类Date对象day调用类Date的print方法
day.init(4,14,2000); //通过类Date对象day调用类Date的init方法
day.print() ; //通过类Date对象day调用类Date的print方法
day += 3; // day.add(3);
(day += 5) += 7; // day.add (5) .add (7);
day.print() ;
return 0;
}
|