假設我們有下面的代碼:引用問題傳遞const對象
#include <iostream>
class Person{
public:
Person(int age);
int get_a();
private:
int a;
};
Person::Person(int age)
{
a = age;
}
int Person::get_a()
{
return a;
}
void Show_Age(Person P)
{
std::cout<<P.get_a()<<std::endl;
}
int main() {
Person P(10);
Show_Age(P);
return 0;
}
現在假設我們有一個沉重的物體,我們應該通過引用傳遞的人,所以我們繼續:
void Show_Age(Person &P)
{
std::cout<<P.get_a()<<std::endl;
}
有不是一個問題,但一個好的觀察是P應該是const,我們試試吧:
void Show_Age(const Person &P)
{
std::cout<<P.get_a()<<std::endl;
}
編譯失敗:
error: passing ‘const Person’ as ‘this’ argument of ‘int Person::get_a()’ discards qualifiers [-fpermissive]
如何解決?
爲什麼不做個'Show_Age'一個成員函數? – jrok
因爲它是一個測試功能,實際上我有另一個類,並使用獲得的功能函數,所以類中我有一個向量,所以我需要通過引用傳遞一個對象 – FacundoGFlores