私はshared_ptrについて混乱しています。私の主な質問は次のとおりです。次のようにすると、C++は新しいオブジェクト(shared_ptrオブジェクト)を作成しますか?shared_ptr <T>とconst shared_ptr <const T>と
void Func1(const shared_ptr<T>& rhs) {}
void Func2(const shared_ptr<const T>& rhs) {}
shared_ptr<T> v1;
Func1(v1);
Func2(v1);
明らかに、Func1(v1)
は参照によって渡されます。しかし、についてはどうですか?Func2(v1)
?
コンパイラは、次のことを後ろにしますか?
shared_ptr<const T> tmp_v2 = v1;
Func2(tmp_v2);
(それが新しいのshared_ptrオブジェクトを作成しない場合)Func2
はFunc1
よりも多くの時間を要する可能性があるため、私は、それを気に。
ありがとうございました!
"_const Tは暗黙的にT_から変換可能でなければなりません"とはどういう意味ですか? – curiousguy
@curiousguy彼は彼が言ったことを正確に意味すると思います。コンストラクタは 'Y'が' T'に暗黙的に変換可能であることを要求します。 OPの場合、「Y」は「T」であり、「T」は「const T」であるため、「Tは暗黙的にconst Tに変換可能」である必要があります。つまり、「const Tは暗黙的にTから変換可能。彼が言ったように。幸いにも、const Tは常にTから変換可能ですので、動作します。 –