和有什么区别
const string& getName() const {return name;}
和
string& getName() const {return name;}
const 在开头和结尾是什么意思?
和有什么区别
const string& getName() const {return name;}
和
string& getName() const {return name;}
const 在开头和结尾是什么意思?
const
函数签名末尾的 表示该方法是const成员函数,因此您的两个方法都是 const 成员函数。
const
开头的意思是返回的都是 const 。
第一个示例是一个 const 方法,它返回对内部数据的 const 引用,因此是 const 正确的。
第二个是返回对内部数据的非常量引用的 const 方法。这不是 const 正确的,因为这意味着您可以修改 const 对象的数据。
对 const 方法的调用不能更改任何实例的数据(可变数据成员除外),只能调用其他 const 方法。
const 方法可以在 const 或非常量实例上调用,但非常量方法只能在非常量实例上调用。
一个返回const
引用并且是const
成员函数,另一个是const
成员函数。
const string& getName() const {return name;}
返回的string
不能修改,方法是const
(见下文)。
string& getName() const {return name;}
该方法不能修改非mutable
类成员。
const string& getName() const {return name;}
return const reference 意味着您在返回对它的引用后将无法使用该实例。
string& getName() const {return name;}
const 方法意味着该方法不会改变对象的状态,除了可变成员变量。也可以在 const 对象上调用此方法,例如:
class MyClass(){
public:
void doSomethingElse()const;
void notConstMethod();
};
void doSomething( const MyClass& obj ){
obj.doSomethingElse();
obj.notConstMethod(); //Error
}
我们const
在函数的前缀中使用以确保从函数返回的任何内容都保持不变。
我们const
在函数声明中使用后缀作为后缀,以确保函数不会对类的当前实例进行任何修改,即如果类的成员函数试图修改当前对象的属性值,那么编译器将抛出错误。
const 函数主要用于const 对象,以确保该函数不会试图修改当前对象数据。