기본 클래스 생성자가 값을 설정하지 않는 이유는 무엇입니까?

user366312

여기서 x와 y의 값은 기본 클래스 생성자를 통해 설정하려고합니다.

그러나 코드는 그렇게 할 수 없습니다.

#include <iostream>

class Point2d {
public:
    double x;
    double y;
    Point2d() : x(0), y(0) {
    }
    Point2d(double x, double y) : x(x), y(y) {
    }
    void Show() {
        std::cout << "(" << x << "," << y << ")\n";
    }
};

class Vector2d : public Point2d {
public:
    Vector2d():Point2d(){
    }
    Vector2d(double x, double y) : Point2d(x,y) {       
    }
    Vector2d(Vector2d const& vec) : Point2d(vec){
    } 
    void Set(double x, double y) {
        Point2d::Point2d(x, y);
    }
};

int main() {
    Vector2d v;
    v.Set(20, -39);
    v.Show(); // prints '(0,0)' instead of '(20,-39)'
}

내 목표는 기본 클래스 생성자를 재사용하고 할당 연산자를 가능한 한 많이 오버로드하는 것입니다.

뉴런

코드가 컴파일되지 않을까 봐 걱정됩니다.

void Set(double x, double y)
{
    Point2d::Point2d(x, y);
}

기본 클래스의 생성자는 멤버 함수가 아닌 하위 클래스 생성자의 멤버 이니셜 라이저 목록의 시작 부분에서 호출되어야합니다.

필요한 것은 아마도

class Point2d {
public:
    double x;
    double y;
    Point2d() : x(0), y(0) {
    }
    Point2d(double x, double y) : x(x), y(y) {
    }
    void Show() {
        std::cout << "(" << x << "," << y << ")\n";
    }
    Point2d& operator=(Point2d const& rhs)
    {
        this->x = rhs.x;
        this->y = rhs.y;
    }
};

class Vector2d : public Point2d {
public:
    Vector2d():Point2d(){
    }
    Vector2d(double x, double y) : Point2d(x,y) {       
    }
    Vector2d(Vector2d const& vec) : Point2d(vec){
    }

    /* also need to be overloaded in the subclass */
    Vector2d& operator=(Vector2d const& rhs)
    {
        Point2d::operator=(rhs);
        return *this;
    }

    void Set(double x, double y) {
        *this = Vector2d(x, y);
    }
};

int main() {
    Vector2d v;
    v.Set(20, -39);
    v.Show();
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

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

분류에서Dev

내 기본 클래스의 정적 생성자가 호출되지 않는 이유는 무엇입니까?

분류에서Dev

모든 기본 클래스 생성자가 호출되지 않는 이유는 무엇입니까?

분류에서Dev

선언을 사용하여 생성 된 생성자가 기본 클래스와 동일한 액세스 수준을 갖는 이유는 무엇입니까?

분류에서Dev

PHP가 시스템 기본 로케일 설정을 대신하지 않는 이유는 무엇입니까?

분류에서Dev

기본 클래스가 정의되지 않은 이유는 무엇입니까?

분류에서Dev

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

분류에서Dev

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

분류에서Dev

INNER JOIN이있는 DbContext.Database.SqlQuery <T>는 기본 클래스 속성 값을 설정하지 않습니다.

분류에서Dev

생성자가 필요한 것처럼 수퍼 클래스 속성을 초기화하지 않는 이유는 무엇입니까?

분류에서Dev

내 ng-options가 기본값을 설정하지 않는 이유는 무엇입니까?

분류에서Dev

클래스에는 기본 생성자가 필요하지만 구조는 필요하지 않은 이유는 무엇입니까?

분류에서Dev

스택 객체가 생성 된 후 기본값을 변경하는 이유는 무엇입니까?

분류에서Dev

스택 객체가 생성 된 후 기본값을 변경하는 이유는 무엇입니까?

분류에서Dev

C # : 파생 클래스가 기본 클래스의 인터페이스 메서드 구현을 재정의 할 수없는 이유는 무엇입니까?

분류에서Dev

std :: atomic의 기본 생성자가 기본 저장 값을 초기화하지 않는 이유는 무엇입니까?

분류에서Dev

인라인 사용자 제공 생성자가 기본 클래스 생성자를 odr- 사용하는 이유는 무엇입니까?

분류에서Dev

기본 클래스에서 파생 클래스 특성을 사용하는 방법은 무엇입니까? 씨#

분류에서Dev

때때로 기본 유형을 기본 클래스로 컴파일하는 이유는 무엇입니까?

분류에서Dev

클래스 속성이 __iadd__ 메서드를 통해 추가 된 값을 기억하지 않는 이유는 무엇입니까?

분류에서Dev

이 코드가 기본 클래스를 C ++의 파생 클래스로 캐스팅하지 않는 이유는 무엇입니까?

분류에서Dev

두 가지 유형을 허용하지 않는 초기 값이있는 Typescript Map 클래스 생성자

분류에서Dev

using-declared 상속 생성자가 기본 생성자를 사용하여 가상 기본 클래스를 초기화하지 않는 이유는 무엇입니까?

분류에서Dev

파생 클래스 생성자에서 예외가 발생합니다. 기본 클래스 소멸자가 호출되지만 파생 클래스 소멸자가 아닌 이유는 무엇입니까?

분류에서Dev

자바 스크립트에서 존재하지 않는 json 값을 기본값으로 설정하는 방법은 무엇입니까?

분류에서Dev

클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

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

분류에서Dev

Spring Boot 부모 스타터가 확실한 기본값을 수정하는 이유는 무엇입니까?

Related 관련 기사

  1. 1

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

  2. 2

    내 기본 클래스의 정적 생성자가 호출되지 않는 이유는 무엇입니까?

  3. 3

    모든 기본 클래스 생성자가 호출되지 않는 이유는 무엇입니까?

  4. 4

    선언을 사용하여 생성 된 생성자가 기본 클래스와 동일한 액세스 수준을 갖는 이유는 무엇입니까?

  5. 5

    PHP가 시스템 기본 로케일 설정을 대신하지 않는 이유는 무엇입니까?

  6. 6

    기본 클래스가 정의되지 않은 이유는 무엇입니까?

  7. 7

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

  8. 8

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

  9. 9

    INNER JOIN이있는 DbContext.Database.SqlQuery <T>는 기본 클래스 속성 값을 설정하지 않습니다.

  10. 10

    생성자가 필요한 것처럼 수퍼 클래스 속성을 초기화하지 않는 이유는 무엇입니까?

  11. 11

    내 ng-options가 기본값을 설정하지 않는 이유는 무엇입니까?

  12. 12

    클래스에는 기본 생성자가 필요하지만 구조는 필요하지 않은 이유는 무엇입니까?

  13. 13

    스택 객체가 생성 된 후 기본값을 변경하는 이유는 무엇입니까?

  14. 14

    스택 객체가 생성 된 후 기본값을 변경하는 이유는 무엇입니까?

  15. 15

    C # : 파생 클래스가 기본 클래스의 인터페이스 메서드 구현을 재정의 할 수없는 이유는 무엇입니까?

  16. 16

    std :: atomic의 기본 생성자가 기본 저장 값을 초기화하지 않는 이유는 무엇입니까?

  17. 17

    인라인 사용자 제공 생성자가 기본 클래스 생성자를 odr- 사용하는 이유는 무엇입니까?

  18. 18

    기본 클래스에서 파생 클래스 특성을 사용하는 방법은 무엇입니까? 씨#

  19. 19

    때때로 기본 유형을 기본 클래스로 컴파일하는 이유는 무엇입니까?

  20. 20

    클래스 속성이 __iadd__ 메서드를 통해 추가 된 값을 기억하지 않는 이유는 무엇입니까?

  21. 21

    이 코드가 기본 클래스를 C ++의 파생 클래스로 캐스팅하지 않는 이유는 무엇입니까?

  22. 22

    두 가지 유형을 허용하지 않는 초기 값이있는 Typescript Map 클래스 생성자

  23. 23

    using-declared 상속 생성자가 기본 생성자를 사용하여 가상 기본 클래스를 초기화하지 않는 이유는 무엇입니까?

  24. 24

    파생 클래스 생성자에서 예외가 발생합니다. 기본 클래스 소멸자가 호출되지만 파생 클래스 소멸자가 아닌 이유는 무엇입니까?

  25. 25

    자바 스크립트에서 존재하지 않는 json 값을 기본값으로 설정하는 방법은 무엇입니까?

  26. 26

    클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

  27. 27

    클래스 내부의 클래스 객체가 기본 생성자없이 자동으로 생성되는 것을 방지하는 방법은 무엇입니까?

  28. 28

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

  29. 29

    Spring Boot 부모 스타터가 확실한 기본값을 수정하는 이유는 무엇입니까?

뜨겁다태그

보관