引入const成員函式

TinnCHEN發表於2019-01-23
class Person {
public:
	Person(string s, string a);
     string PerName;
	string PerLive;
	const string& GetName()  const { return PerName; }//(1)
    string GetLive() const { return PerLive; }//(2)僅舉例正常應該跟(1)一樣
};

上述例子:
(2)中在引數列表後的const是限制函式不能修改資料成員。但是因為返回是按值返回的,所以會產生拷貝。會產生拷貝開銷。
(1)中後面const與(2)作用相同,函式返回常量引用的好處有:
1、不產生拷貝開銷。因為返回引用的函式返回的是物件本身而非物件的副本。
2、增加程式設計靈活性,我們無法用一個普通引用去繫結一個常量。所以宣告時候可以宣告為常量引用,即使繫結了一個非常量,也可以對其進行修改。(一般不建議修改)
3、可以返回左值,我們能為返回型別是非常量引用的函式的結果賦值。

正在學習c++, 暫時瞭解的有這麼多,歡迎指正與補充!

相關文章