是什麼是什麼意思常量在開始和結束時是什麼意思常量在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