- 838 名前:デフォルトの名無しさん mailto:sage [2021/02/21(日) 22:29:56.45 ID:LxNhpnKU.net]
- >>818
shared_ptrは関係ないから普通のポインタで話するぞ(同じ事だ) IFoo* p = new Foo(); IFoo* q = new Foo(); というのがあったとして*q = *p;ってのは何だと思う? pとqはIFoo*型だ だからもちろん*pと*qというのはIFoo型だ すなわち*q = *p;というのはIFoo::operator=(const Foo&)の呼び出しだ operator=()はvirtualにできないから、pとqが本当はFoo型オブジェクトを指してることなんか知りもしないし考慮もしない よってIFoo部分の代入だけが行われて、要はqのIFoo部分だけが首チョンパされてpのIFoo部分が代入される これをスライシングという
|

|