假设我们有下面的代码:引用问题传递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