2017-12-07 9 views
-2

このことはどのように機能しますか?オペレータ抽象クラスでの削除、動作はどうですか

class Car 
{ 
public: 
Car() = default; 
Car(const Car& other) = delete; 
Car& operator=(const Car& other) = delete; 
virtual void WhatsTheMake() = 0; 
virtual void WhatsTheSpeed() =0; 
} 

は今、この削除キーワードはここで何を意味するのでしょうか?

抽象クラスの増加コードサイズも使用します。私は抽象クラスを必要としない場合、私はいつもそれを作成する必要がありますか?

+4

これらは[*削除された関数*](http://en.cppreference.com/w)です。これらのクラスは、共通の実装を提供したくないので、継承する具象クラスに実装を委託したいと思います。/cpp/language/function#Deleted_functions)。 –

+0

これを使用する必要がない場合は、明らかに冗長になります。 about ** delete ** - 関数定義を明示的に削除することを意味します。 – Green

答えて

1

関数を削除済み(=削除)としてマークすると、その関数を使用するとコンパイルエラーが生成されます。コードサイズについて

、実際にはい、抽象クラスを定義することは純粋仮想コール(Declaring abstract class (pure virtual method) increase binary size substantially)私は共通のベース・インタフェースおよびIを定義する必要があるときに

個人的に私は、抽象クラスを使用を管理するためのより多くのコードを生成します(https://en.wikipedia.org/wiki/Polymorphism_(computer_science)#Subtyping

関連する問題