我发现,在重构operator的时候,常常变量加const XX & 和 在函数声明后面加consst。
例如如下代码:
struct person
{
string name;
int age;
person(string name, int age)
{
this->name = name;
this->age = age;
}
bool operator < (const person& p) const
{
return this->age < p.age;
}
};
但是我并不知道为什么,仔细研究后可进行如下的解释,以如上代码为例:
1. const person& 指的是对实参的引用,而p为一个常量形参,对p的修改(不能修改)并不能影响实参。
但是实参的变化能对p进行改变。
更详细的解释:http://blog.csdn.net/luoweifu/article/details/45600415
2. 下面来看函数后面const的用法
// test1107.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class aa{
int num;
public:
aa(){
int b =10;
num = b;
};
void out1(){
cout<<num<<endl;
}
void out2() const{
cout<<num<<endl;
}
void out3() const{
num+=10; //出错,const函数不能修改其数据成员
cout<<num<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
aa a1;
a1.out1();
a1.out2();
a1.out3();
const aa a2;
a2.out1(); // 错误,const的成员 不能访问非const的函数
a2.out2();
a2.out3();
return 0;
}
const的函数不能对其数据成员进行修改操作。
const的对象,不能引用非const的成员函数。