기본 클래스의 가상 상속은 여러 파생 클래스 중에서 공통 공유 기본 클래스를 만들어 DDD 문제를 해결한다는 것을 알고 있습니다. 내 기본 클래스에 파생 클래스가 하나만있는 경우 사실상 또는 비 가상 클래스를 상속 할 때 차이가 있습니까? 기본적으로 쿼리 Is it possible to forbid deriving from a class at compile
참조 계산을 구현하는 C++ 클래스가 있고이 클래스의 모든 사용자가 객체가 둘 이상의 참조 카운터로 끝나지 않도록 가상으로 만이 클래스에서 상속 받기를 바랍니다. 나는이 요구 사항을 컴파일 할 때 또는 적어도 런타임 중에 주장하려고한다. 달성 할 수있는 방법이 있습니까?
는의 코드 조각에서 시작하자 : GCC 4.5.1과 4.6.1 파생 클래스의 생성자 사이의 유일한 차이는 첫 번째 명시 적으로 상태이다 Base1로 컴파일 #include <iostream>
struct God{
God(){_test = 8;}
virtual ~God(){}
int _test;
};
struct Base1
많은 인터페이스를 구현하는 다소 큰 개체를 구현하려고합니다. 이러한 인터페이스 중 일부는 순수 가상입니다. 다이아몬드 상속에 문제가있을 수 있습니다. Visual Studio에서 C4250 ('class1' : inherits 'class2::member' via dominance)이라는 경고를보고합니다. 우선이 클래스들은 사실상 상속받습니다. 이 문제를
이 예제에서는 다형성의 적용에 약간의 문제가 있습니다. class A
{
public:
virtual A * copy() const = 0;
virtual ~A() = 0;
};
A::~A(){}
class B
{
public:
virtual B * copy() const = 0;
virtual ~B()
사용자가 수행 한 작업을 기록하고 싶습니다. 대부분의 OO 언어에서 및 LogoutAction과 같은 여러 자식 클래스가있는 LoggedAction 클래스를 통해이를 구현합니다. 그런 다음 LoggedAction의 목록을 반복하고 가상 상속을 통해 특정 하위 동작을 가져올 수 있습니다. 그러나 장고 모델을 사용하여 작동하지 않습니다. 예 models.py
내가 상속에 대해 읽고 있어요 그리고 내가 시간 동안 해결할 수 없었던 중요한 문제가 있습니다 클래스 Bar가 virtual 기능을 가진 클래스가 주어 , class Bar
{
virtual void Cook();
};
을 class Foo : public Bar
{
virtual void Cook();
};
및 01 : 사
나는 this question을 언급했다 (제목을 바꿨다). virtual에 관련된 코드 생성은 구현에 따라 다릅니다. 그러나 이전의 질문은 비 가상 기본 메서드를 호출 할 때 virtual 상속에 관련된 추가 비용이 있다는 것을 암시합니다. 나는 테스트 코드를 다음과 쓴 (-O4와) ++ g에서의 어셈블리를 확인 : struct Base {
in
내가 가지고있는 다음과 같은 클래스 : class Base
{
public:
Base() { x = 3; }
int x;
virtual void foo() {};
};
class Med1 : public virtual Base
{
public:
int x;
Med1() { x = 4; }
v