是什么是什么意思常量在开始和结束时是什么意思常量在C++中在不同的地方
const string& getName() const {return name;}
和
string& getName() const {return name;}
之间的区别?
是什么是什么意思常量在开始和结束时是什么意思常量在C++中在不同的地方
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的情况下调用。
感谢您的回答。 – Laura
一个返回const
参考,并且是const
成员函数,另一个是const
成员函数。
const string& getName() const {return name;}
返回string
不能被修改,并且该方法是const
(见下文)。
string& getName() const {return name;}
该方法不能修改非mutable
类成员。
无关:since该函数不在任何范围内,它不是一个成员函数,而只是一个函数的权利? :)(假设它不在头文件中) – phantasmagoria
@phantasmagoria你不能有一个非成员const函数,所以它肯定在类范围内。 –
@phantasmagoria这很可能是直接从类声明中复制的行。这就是为什么它是一个班轮。 – Joe
const string& getName() const {return name;}
返回const引用意味着你将不能够实例返回对它的引用后。
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
}
http://www.cprogramming.com/tutorial/const_correctness.html这是如何使用的常量 – Lucian
可能重复的一个很好的教程[含义“const”最后在一个C++方法声明?](http://stackoverflow.com/questions/751681/meaning-of-const-last-in-ac-method-declaration) – juanchopanza
可能重复的[多少和哪在C++中使用“const”是什么意思?](http://stackoverflow.com/questions/455518/how-many-and-which-are-the-uses-of-const-in-c) – dmckee