C++ ⇒ VBA 書いて覚えるための初心者自己中記事

C++ ⇒ VBA 勉強の履歴を付けるというかノート代わりに使ってます

C++ テンポラリオブジェクト 書いて覚えるための初心者自己中記事

 

str = string("hoge");

 

この状況について。

stringクラスのオブジェクトを作って"hoge"で初期化している。

ただし、一時的に。

 

このように一時的に作られたオブジェクトのことを

テンポラリオブジェクト

という。

 

 上記の場合は文字列を引数にとるコンストラクタがあるから可能。

これをキャストで行うこともできて、

str = (string)"hoge";

 こうなる。

ただし、この場合は引数が複数では無理。

 

テンポラリオブジェクトの寿命(デストラクタが呼ばれるタイミング)は

上記の文章まで。

すぐに消される。

 

 オブジェクトを返す関数の戻り値もテンポラリオブジェクト。

 

class Hoge {
public:
	Hoge(const int& n);
	void Show() const;
private:
	int m_n;
};
 
Hoge::Hoge(const int& n) : m_n(n) {
}
 
void Hoge::Show() const{
	cout << m_n << endl;
}
 
int main() {
	const int& n = 1;
	const Hoge& hoge = Hoge(n);
	hoge.Show();
		system("pause");
}

 

const参照されたテンポラリオブジェクトの寿命は

const参照したオブジェクトの寿命と一緒。

それはそうですよね。

 

 

 

ここまで。