C++/コンストラクタにexplicitをお忘れなく
をテンプレートにして作成
ホーム
検索
最終更新
ヘルプ
Wiki書式ヘルプ(整形ルール)
開始行:
explicitがどういう効果を持つのか,単純に知りませんでした。
ですので,その紹介。
#code(C,){{
class A
{
A( int );
}
class B
{
B( const A& );
}
void func()
{
B( 3 );
}
}}
BのコンストラクタはAが引数の型なんだから
3を入れてら怒られるじゃない!
なんですが,実はこれ怒られないんです。
暗黙の変換(だったっけ?)というものが行われ,内部では
#code(C,){{
void func()
{
B( A(3) );
}
}}
が行われるんだそうです。
それを防ぐために,explicitキーワード。
#code(C,){{
class B
{
explicit B( const A& );
}
}}
こうすれば,勝手に変換されなくなるんだそうです。
終了行:
explicitがどういう効果を持つのか,単純に知りませんでした。
ですので,その紹介。
#code(C,){{
class A
{
A( int );
}
class B
{
B( const A& );
}
void func()
{
B( 3 );
}
}}
BのコンストラクタはAが引数の型なんだから
3を入れてら怒られるじゃない!
なんですが,実はこれ怒られないんです。
暗黙の変換(だったっけ?)というものが行われ,内部では
#code(C,){{
void func()
{
B( A(3) );
}
}}
が行われるんだそうです。
それを防ぐために,explicitキーワード。
#code(C,){{
class B
{
explicit B( const A& );
}
}}
こうすれば,勝手に変換されなくなるんだそうです。
ページ名: