2017-12-07 2 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)