0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

インスタンスを生成しつつ参照渡し、できない(C++)

Posted at

参照渡しの関数に(実質)定数を渡すとき

参照渡しで使っている関数があります。
値渡しなら引数のところにコンストラクタを書けますが、参照渡しの場合はこれができません。

void func1( Hoge & hoge )
{
}

void func2( Hoge hoge )
{
}

int main()
{
	Hoge v( 123 );		// 普通にインスタンスを生成.
	func1( v );			// 普通にOK.
	//func1( Hoge(123) );// できない.

	func2( v );			// 普通にOK.
	func2( Hoge(123) );	// できる.
}

この違いについて(日本語で)調べていたのですがわかんないですね、やっぱり。

考察

考えられることはライフタイム問題でしょうか。
例えば

func1( *(new Hoge(123) );

これはOKなのです。スタックから参照すると破棄の問題が出る、とかそういうことなのでしょうか。
しかし手前でインスタンスを生成し変数名をつけても同じことです。

ちゃんと規格を読めば判るのかな....

0
0
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?