파생 클래스의 const 값을 기본 예기치 않은 동작의 생성자에 전달하는 C ++

Micha

나는 이것이 상당히 기본적인 것이라고 생각하지만 여기에서 소스를 찾을 수 없습니다.

파생 클래스에는 기본 클래스에 전달해야하는 초기화 정보가 포함되어 있습니다. 이 경우 메모리 예약입니다.

class Derived: public Base
{
private:
  const unsigned short memorySize= 100;    
public:  
  inline Derived() : Base(memorySize) {}
  void DoStuff();
};

이것은 비참하게 실패합니다. 기본 생성자가 파생 생성자보다 먼저 호출되고 memorySize는 파생 생성자가 호출 될 때만 할당됩니다.

#define memorySize 100

class Derived: public Base
{
private:

public:  
  inline Derived() : Base(memorySize) {}
  void DoStuff();
};

이것은 예상대로 작동합니다.

내 질문 : 첫 번째 예제의 memorySize가 기본 생성자가 호출 될 때 아직 초기화되지 않았거나 여기에서 다른 일이 발생하고 있다고 가정합니까?

상수에 대한 #define은 C ++에서 바람직하지 않으며 const 값을 사용하는 것이 매우 바람직하다는 것을 배웠습니다. 이것은이 규칙의 예외입니까, 아니면이 상황을 처리하는 더 적절한 방법이 있습니까?

MSalters

두 가지 예는 완전히 비교할 수 없습니다. 첫 번째 예에서의 모든 인스턴스 DerivedmemorySize. 짐작했듯이의 생성자 Derived가 처리합니다.

당신은 그것을 전혀 원하지 않습니다. 모든 인스턴스에 대해 별도의 상수가 아니라 클래스에 대해 하나의 상수 만 있습니다. 그것은 다음과 같이 쓰여졌습니다.

class Derived: public Base
{
private:
  static const unsigned short memorySize = 100;    

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파생 클래스 속성을 Angular의 기본 클래스 생성자에 전달할 때 오류 발생

분류에서Dev

파생 클래스 C ++에서 기본 클래스 전용 멤버의 동작을 재정의합니다.

분류에서Dev

C # WPF의 파생 클래스에서 기본 클래스의 값을 설정하는 방법

분류에서Dev

파생 형식을 반환하는 기본 클래스의 C # 메서드

분류에서Dev

예기치 않은 동작을 보여주는 Python의 목록 할당 / 생성

분류에서Dev

Java에서 생성자의 기본값으로 하위 클래스를 재정의하는 슈퍼 클래스

분류에서Dev

C ++ 클래스의 생성자를 사용하여 char 배열에 기본값 제공

분류에서Dev

C ++ 클래스의 생성자를 사용하여 char 배열에 기본값 제공

분류에서Dev

기본 클래스의 친구 연산자에 액세스하는 C ++ 파생 클래스

분류에서Dev

속성을 포함하는 파이썬 클래스의 ruamel.yaml 덤프가 예기치 않은 yaml 형식을 생성하는 것 같습니다.

분류에서Dev

생성자 내부 또는 외부에서 클래스 속성의 기본값을 설정하는 것의 차이점은 무엇입니까?

분류에서Dev

C #의 기본 클래스에서 제네릭 사용 : 기본 클래스의 메서드가 파생 클래스의 형식을 반환하는지 확인하는 방법은 무엇입니까?

분류에서Dev

상속 된 기본 생성자의 일부만 사용하는 C ++ 파생 클래스

분류에서Dev

기본 클래스의 멤버가 생성자에서 처음 초기화 된 값을 유지하지 않는 이유는 무엇입니까?

분류에서Dev

기본 클래스의 가상 성이 복사 생성자의 동작을 변경하는 이유 / 방법은 무엇입니까?

분류에서Dev

파생 클래스에서 기본 클래스 생성자의 특수화를 구현하는 다른 방법은 무엇입니까?

분류에서Dev

CRTP를 사용하여 기본 클래스의 자식 클래스를 생성자에 전달합니까?

분류에서Dev

C # : 클래스 변수, 기본값을 정의하고 작동하지 않는 설정 가져 오기?

분류에서Dev

파생 클래스를 선언하는 동안 기본 클래스의 생성자가 호출됩니다.

분류에서Dev

다형성 기본 클래스의 하위 클래스 배열을 생성자로 전달하는 가장 간단한 구문

분류에서Dev

파생 클래스의 기본 생성자에서 기본 생성자로 인수를 전달할 수 있습니까?

분류에서Dev

EF6-기본 클래스 속성을 사용하는 파생 클래스의 TPH 외래 키 매핑

분류에서Dev

경우 yocto의 WIC는 예기치 않은 작은 파티션을 생성합니다

분류에서Dev

임의 생성기 예기치 않은 동작

분류에서Dev

ksh에서 -i 옵션 (파일에서 SQL 읽기)을 사용하여 sqlcmd를 실행 한 후 파일 설명자 및 / 또는 I / O 스트림의 예기치 않은 동작이 무한 루프를 생성 함

분류에서Dev

기본 클래스의 C ++ 액세스 할 수없는 생성자

분류에서Dev

C ++에서 다른 (관련되지 않은!) 클래스의 기본 클래스에서 파생 클래스의 개체 참조

분류에서Dev

OpenGL C ++가 작동하지 않는 기본 생성자로 호출 된 메시 클래스

분류에서Dev

C ++의 기본 클래스에서 파생 클래스의 개체를 만드는 방법

Related 관련 기사

  1. 1

    파생 클래스 속성을 Angular의 기본 클래스 생성자에 전달할 때 오류 발생

  2. 2

    파생 클래스 C ++에서 기본 클래스 전용 멤버의 동작을 재정의합니다.

  3. 3

    C # WPF의 파생 클래스에서 기본 클래스의 값을 설정하는 방법

  4. 4

    파생 형식을 반환하는 기본 클래스의 C # 메서드

  5. 5

    예기치 않은 동작을 보여주는 Python의 목록 할당 / 생성

  6. 6

    Java에서 생성자의 기본값으로 하위 클래스를 재정의하는 슈퍼 클래스

  7. 7

    C ++ 클래스의 생성자를 사용하여 char 배열에 기본값 제공

  8. 8

    C ++ 클래스의 생성자를 사용하여 char 배열에 기본값 제공

  9. 9

    기본 클래스의 친구 연산자에 액세스하는 C ++ 파생 클래스

  10. 10

    속성을 포함하는 파이썬 클래스의 ruamel.yaml 덤프가 예기치 않은 yaml 형식을 생성하는 것 같습니다.

  11. 11

    생성자 내부 또는 외부에서 클래스 속성의 기본값을 설정하는 것의 차이점은 무엇입니까?

  12. 12

    C #의 기본 클래스에서 제네릭 사용 : 기본 클래스의 메서드가 파생 클래스의 형식을 반환하는지 확인하는 방법은 무엇입니까?

  13. 13

    상속 된 기본 생성자의 일부만 사용하는 C ++ 파생 클래스

  14. 14

    기본 클래스의 멤버가 생성자에서 처음 초기화 된 값을 유지하지 않는 이유는 무엇입니까?

  15. 15

    기본 클래스의 가상 성이 복사 생성자의 동작을 변경하는 이유 / 방법은 무엇입니까?

  16. 16

    파생 클래스에서 기본 클래스 생성자의 특수화를 구현하는 다른 방법은 무엇입니까?

  17. 17

    CRTP를 사용하여 기본 클래스의 자식 클래스를 생성자에 전달합니까?

  18. 18

    C # : 클래스 변수, 기본값을 정의하고 작동하지 않는 설정 가져 오기?

  19. 19

    파생 클래스를 선언하는 동안 기본 클래스의 생성자가 호출됩니다.

  20. 20

    다형성 기본 클래스의 하위 클래스 배열을 생성자로 전달하는 가장 간단한 구문

  21. 21

    파생 클래스의 기본 생성자에서 기본 생성자로 인수를 전달할 수 있습니까?

  22. 22

    EF6-기본 클래스 속성을 사용하는 파생 클래스의 TPH 외래 키 매핑

  23. 23

    경우 yocto의 WIC는 예기치 않은 작은 파티션을 생성합니다

  24. 24

    임의 생성기 예기치 않은 동작

  25. 25

    ksh에서 -i 옵션 (파일에서 SQL 읽기)을 사용하여 sqlcmd를 실행 한 후 파일 설명자 및 / 또는 I / O 스트림의 예기치 않은 동작이 무한 루프를 생성 함

  26. 26

    기본 클래스의 C ++ 액세스 할 수없는 생성자

  27. 27

    C ++에서 다른 (관련되지 않은!) 클래스의 기본 클래스에서 파생 클래스의 개체 참조

  28. 28

    OpenGL C ++가 작동하지 않는 기본 생성자로 호출 된 메시 클래스

  29. 29

    C ++의 기본 클래스에서 파생 클래스의 개체를 만드는 방법

뜨겁다태그

보관