传递类的const引用

sma*_*ato 4 c++

void foo(const ClassName &name)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

如何访问类实例名称的方法?

name.method()没用.然后我试过:

void foo(const ClassName &name)
{
    ClassName temp = name;
    ... ....
}
Run Code Online (Sandbox Code Playgroud)

我可以使用temp.method,但是foo执行后,原来的名字搞砸了,任何想法?BTW,名称的成员变量没有搞砸,但它是类的子类的成员变量搞砸了.

Nav*_*een 6

您所提供的描述中去,它看起来像method()ClassName为一个非const方法.如果您尝试在const对象上调用非const方法,编译器将抛出错误.当您ClassName temp = name;创建时,您将变量的副本创建为临时非const对象temp.您可以在此对象上调用任何方法,但由于它是副本,因此对该对象进行的修改不会反映在name对象中.

编辑

解决这个问题的最好方法是,ClassName::method如果它不修改任何成员变量,则使const成为可能.如果是,则不应将函数foo中的参数作为const引用.您应该将参数作为非const引用.