2011-02-27 13 views
0

Sutter의 클래스 디자인 가이드 라인 & Alexandrescu의 코딩 표준 책은 기본 클래스를 추상화하여 인스턴스화 할 수 없도록합니다. 이것은 a.o를 방지하기위한 것입니다. 다형성 할당 및 복사 문제.리프 클래스의 상속

그러나, 예를 들어, 클래스 라이브러리를 사용할 때. Qt, 추가 동작을 추가하기 위해 라이브러리의 Concordete 클래스를 상속하는 것이 일반적입니다. 예를 들어, QListBox에서 상속받은 MyListBox 클래스를 만들어 응용 프로그램의 모든 목록 상자에 응용 프로그램 별 동작을 추가합니다.

인스턴스화 할 수없는 기본 클래스를 갖는 조언과 함께이 일반적인 관행을 어떻게 조정할 수 있습니까?

클래스 디자인 가이드 라인 셔터 & Alexandrescu의의 코딩 표준 책

(강조 광산)에서 발견 :

답변

2

귀하의 첫 번째 문장은 당신이 찾고있는 해답이 포함되어 있습니다.

그것은 단지 지침 일 뿐이며, 돌로 조각 된 규칙은 아닙니다.

당신은 당신이 사용하는 라이브러리의 예를 들어 특정 기술 제한이있는 경우 특정 순간에 주어진 대안의 총량을 세배 몇 가지 패턴을 사용하는 데 (같은 방법으로 더 나쁜 경우, 당신은 을 무시할 수 코드 또는 라이브러리를 다시 작성해야 함).

내 대답의 요점 : 이러한 모든 패턴, 가이드 라인 및 모범 사례는 프로그래밍 목표를 달성 할 수있는 수단입니다. 그것들은 목표가 아닙니다.

2

기본 클래스에만 적용되는 지침은 인스턴스화하면 안됩니다 (일반적으로 그렇게하는 것이 바람직하지 않으므로). 예를 들어 QDialog에서 상속했기 때문에 코드의 다른 곳에서 일반 이전 QDialog을 사용하고 싶지 않다는 의미는 아닙니다.

관련 문제