[過去ログ] C++相談室 part155 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
568: 2021/04/30(金)01:30 ID:7VhEvZ/Q(1/4) AAS
>>567
Dog d;
の時に func( Animal &a )に対して、
func(d);
がエラーにならないということ?
572(1): 2021/04/30(金)10:40 ID:7VhEvZ/Q(2/4) AAS
>>569
class Animal {・・・};
class Dog : publoic Animal {・・・};
std::vector<Animal> g_list;
void func( Animal &a )
{
g_list.push_back(a);
}
int main()
{
省4
577: 2021/04/30(金)11:48 ID:7VhEvZ/Q(3/4) AAS
>>573
この場合、スライシングが発生しても問題ない、という観点もあるかも。
579(1): 2021/04/30(金)12:18 ID:7VhEvZ/Q(4/4) AAS
スライシングが起きるとき、基本クラス部分だけをコピーすることになるが、
その際、仮想テーブルへのポインタが継承クラス用のままだと、コピー後の
操作が危険になる可能性があるが、もし、仮想テーブルへのポインタを
基本クラス用に変えてしてしまえば、コピー後の動作は完全に基本クラス的に
なってしまうけれど、その反面、メンバー関数を呼び出しても特にメモリーの
破壊などは起きないはず。
そのようにしてしまえばスライシングが起きても問題ないような気が。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.219s*