C++のクラスのコンストラクタにつけるやつで、「explicit」っていうのがありますよね
明示的なコンストラクタってやつです
あれをスマートポインターとかのコンストラクターにつけて、そのスマポ型vectorをつくったりすると、値をvectorのpush_backでスマポに直接いれることができなくなります
え~とこんな感じです
class IntClass{
explicit IntClass(int a){} //explicitのコンストラクタ
};
SmartPtr<IntClass> sp; //これはIntClass型スマートポインター
vector< SmartPtr<int> > sps; //これはIntClass型スマポのvetor
sps.push_back(10); //これができない!(多分)
ここまで書いてあれなんですけど、このexplicit、スマートポインターとかによく使われる理由ってなんでしょうか・・・
ネットで検索してみると結構explicitつけてるのが多いんですが、いまいち必要性がわかりません