#include <iostream>
using namespace std;
class Object
{
public:
Object() {}
void Print() const
{
cout << "const" << endl;
}
void Print()
{
cout << "mutable" << endl;
}
};
void print_obj(const Object& obj)
{
obj.Print();
}
int main()
{
Object obj1;
const Object obj2;
Object*const pobj1 = &obj1;
print_obj(obj1);
print_obj(obj2);
obj1.Print();
obj2.Print();
pobj1->Print();
return 0;
}
調用函數我知道輸出是帶或不帶「常量」,在C++簽名
const
const
mutable
const
mutable
我想爲const對象,它看起來對const函數。否則,可變函數。但爲什麼最後一個是可變的?
'pobj1'是一個指向非const的Object的const指針。指針本身不能被修改(不能被指向別的東西),但它指向的對象可以被修改,所以調用一個非const的重載。請注意'Object * const'與'Object const *'不是同一個類型 – 2015-04-05 02:13:29