匿名物件(臨時物件) (自動構造,自動析構)
c++的建立物件是乙個費時,費空間的乙個操作。
有些固然是必不可少,但還有一些物件卻在我們不知道的情況下被建立了。
通常以下三種情況會產生匿名物件:
1.以值的方式給函式傳參,會產生臨時物件,為方便區分,稱為"引數匿名物件";
2.函式需要返回乙個物件時,會產生臨時物件,為方便區分,稱為"返回匿名物件"
3.型別轉換時,會產生臨時物件,為方便區分,稱為"轉換匿名物件";
以如下**為例進行解釋說明:
基礎面試中常遇到的:實現string類的四個預設函式
#include #include #include class string
public:
string()
string(const char *srcchar)
else
destructor!
}~string()
str_ = nullptr;
len_ = 0;
}string(const string& srcstring)
string& operator=(const string& srcstring)
else
len_ = srcstring.length();
str_ = new char[len_ + 1];
str_[len_] = '\0';
memcpy(str_, srcstring.str_, len_);
return *this;}}
private:
char* str_ = nullptr;
int len_ = 0;
};string getstring(string src)
string getstring1(string src)
void getstring2(string src)
string getstring3()
int main()
執行結果:
執行結果說明:
C 臨時匿名物件
匿名物件 臨時的物件,一般都是在構造完就被釋放掉了 有特殊情況,返回值優化 1.返回值優化 若是函式返回的匿名物件返回時候有同型別的新物件接上,則該匿名物件被轉化為新物件。1 include iostream 2 using namespace std 34 classa5 13 a a obj 1...
匿名物件和匿名類
一,匿名物件 匿名物件 沒有名字的物件 new car 匿名物件其實就是定義物件的簡寫格式。car c new car c.run 用匿名物件來書寫以上 new car run 匿名物件的使用方法 1 當物件對方法僅進行一次呼叫的時候,就可以簡化成匿名物件。如乙個 物件需要進行呼叫方法2次,用匿名物...
匿名型別與匿名物件
var匿名型別 推斷型別 var可代替任何型別,編譯器會根據上下文來判斷你到底是想用什麼型別,類似 object,但是效率比object高點。我們可以賦予區域性變數推斷 型別 var而不是顯式型別。var 關鍵字指示編譯器根據初始化語句右側的表示式推斷變數的型別。推斷型別可以是內建型別 匿名型別 使...