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参照したオブジェクトの寿命と一緒。
それはそうですよね。
ここまで。