引用: C++のためのAPIデザイン by マーティン・レディ
7.1
void SetObjectByValue(MyObject obj);
あるメソッドが基本クラスの引数を(値で)受け取った場合、あなたが派生クラスを渡したときにこの派生クラスに他のフィールドがあると、それが切り取られるという問題だ。これは、値で渡されるオブジェクトのサイズは、コンパイル時に、基本クラスのサイズであると判断されるからだ。値ではなく、const参照で引数を渡せば、このスライス問題を回避できる。
Go to list of users who liked
More than 5 years have passed since last update.
引用: C++のためのAPIデザイン by マーティン・レディ
7.1
void SetObjectByValue(MyObject obj);
あるメソッドが基本クラスの引数を(値で)受け取った場合、あなたが派生クラスを渡したときにこの派生クラスに他のフィールドがあると、それが切り取られるという問題だ。これは、値で渡されるオブジェクトのサイズは、コンパイル時に、基本クラスのサイズであると判断されるからだ。値ではなく、const参照で引数を渡せば、このスライス問題を回避できる。
Register as a new user and use Qiita more conveniently
Go to list of users who liked