常对象
常成员函数是常对象唯一的对外接口。
常对象成员
常数据成员
只能通过构造函数初始化表对常数据成员进行初始化。
常成员函数
只能引用本类的数据成员,但不能修改。
“常”用于函数重载
将成员函数重载为常成员函数
常对象会自动调用常成员函数。
代码片段一
class MyClass {
public:
void func() { cout << "in func" << endl; }
void func() const { cout << "in const func" << endl; }
};
int main()
{
MyClass myclass1;
const MyClass myclass2;
myclass1.func();
myclass2.func();
return 0;
}
测试结果
in func
in const func
参数为const
代码片段二
void func(const int i) {
cout << "const para" << endl;
}
void func(int i) {
cout << "not const para" << endl;
}
测试结果
错误,已有主体。
也就是说,这样并不能构成函数重载。
代码片段三
#include <iostream>
using namespace std;
void func(const int* i);
void func(int* i);
int main()
{
const int i = 1;
int j = 2;
func(&i);
func(&j);
return 0;
}
void func(const int* i) {
cout << "const para" << endl;
}
void func(int* i) {
cout << "not const para" << endl;
}
测试结果
const para
not const para
仅当const参数是一个引用或指针时,C++才允许基于const类型进行函数重载。
参考资料:
https://www.cnblogs.com/qingergege/p/7609533.html
https://blog.youkuaiyun.com/shltsh/article/details/45939977