생성자의 초기화 목록에서 새 객체를 초기화하고 참조 할 수 있습니까?

Dork

클라이언트는 내가 만들고 만드는 그것의 초기화에 새로운 세션 객체를 전달해야하므로 DLL의 상위 클래스입니다 요청세션이 동일한 세션에 할당해야합니다. 가능합니까?

class Session
{
public:Session() {}

};

class Requestor
{
public: Requestor(const Session& session) {};
};

class Client
{
public:Client()
{
    Session newSession;
    requestor = Requestor(newSession);
}

private:
    Session session;
    Requestor requestor;
};
Juanchopanza

가능하지만 초기화 순서가 멤버의 선언 순서에 따라 달라진다는 점에서 다소 취약합니다. 이것이 귀하의 예에서와 같이 남아 있다면 간단히 할 수 있습니다.

class Client()
{
public:
    Client() : requestor(session) // session is implicitly default constructed
    {}
private:
    Session session;
    Requestor requestor;
};

참고 : Session생성자에서 로컬 개체를 인스턴스화하는 이유는 명확하지 않습니다 . 나는 그것이 실수라고 생각합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

'new'의 반환을 역 참조하는 값에서 참조를 초기화 할 수 있습니까?

분류에서Dev

초기화 목록에 설정된 생성자 본문의 변수를 확인할 수 있습니까?

분류에서Dev

생성자가 초기화되면 객체의 배열을 어떻게 초기화 할 수 있습니까? C ++

분류에서Dev

생성자가 초기화되면 객체의 배열을 어떻게 초기화 할 수 있습니까? C ++

분류에서Dev

위임 생성자의 이니셜 라이저 목록에서 벡터를 초기화 할 수 없습니다.

분류에서Dev

wx.App이 생성되기 전에 wx.Font 객체를 어떻게 초기화 할 수 있습니까?

분류에서Dev

다른 클래스의 생성자의 도움으로 객체를 초기화 할 수 있습니까?

분류에서Dev

생성자 초기화 목록에서 정적 변수를 초기화 할 수 없지만 생성자 본문에서는 할 수있는 이유

분류에서Dev

C ++ std :: function을 초기화 할 때 자리 표시자를 참조 / 참조 인수에 어떻게 바인딩 할 수 있습니까?

분류에서Dev

비 const 참조를 다른 유형의 객체로 초기화 할 수없는 이유는 무엇입니까?

분류에서Dev

varargs 생성자의 이니셜 라이저 목록에서 벡터를 어떻게 초기화 할 수 있습니까?

분류에서Dev

객체 초기화에서 할당 연산자에 의해 생성자에 매개 변수를 전달할 수있는 이유는 무엇입니까?

분류에서Dev

생성자 초기화 목록으로 구조체를 초기화하는 데 문제가 있습니다.

분류에서Dev

초기화 목록-같은 클래스의 다른 멤버로 멤버를 초기화 할 수 있습니까?

분류에서Dev

초기화가있는 선언에서 초기화되지 않은 데이터에 대한 참조를 사용할 수 있습니까?

분류에서Dev

init () 중에 객체 초기화를 어떻게 취소 할 수 있습니까?

분류에서Dev

객체 데이터가 C ++ 생성자에서 잘못된 순서로 초기화되면 어떤 종류의 버그가 발생할 수 있습니까?

분류에서Dev

생성자 초기화 목록에서 기본 ctor를 호출 할 필요가 있습니까?

분류에서Dev

부분 전문화가 전문화의 인수 목록에서 sizeof (T)를 참조 할 수 있습니까?

분류에서Dev

집계 초기화가 집계의 이전 요소를 참조 할 수 있습니까?

분류에서Dev

상호 의존적 인 최종 참조를 어떻게 초기화 할 수 있습니까?

분류에서Dev

자바 스크립트에서 자기 참조 함수를 사용하여 객체의 속성을 정의 할 수 있습니까?

분류에서Dev

생성자에서 this.fieldname을 사용하여 기본 클래스의 필드를 초기화 할 수 있습니까?

분류에서Dev

초기화 목록을 사용하여 복사 생성 중에 벡터의 값 배열을 초기화 할 수 있습니까?

분류에서Dev

지정된 이니셜 라이저가 C99에서 초기화하는 변수를 합법적으로 참조 할 수 있습니까?

분류에서Dev

C에서 구조체를 초기화하려고 할 때 오류가 발생했습니다.

분류에서Dev

가 선언되기 전에 왜 블록 초기화 나의 인스턴스 필드를 참조 할 수 있습니다?

분류에서Dev

onAttach에서 인터페이스 객체를 초기화 할 수 없습니까?

분류에서Dev

Julia에서 고차 텐서를 어떻게 초기화 할 수 있습니까?

Related 관련 기사

  1. 1

    'new'의 반환을 역 참조하는 값에서 참조를 초기화 할 수 있습니까?

  2. 2

    초기화 목록에 설정된 생성자 본문의 변수를 확인할 수 있습니까?

  3. 3

    생성자가 초기화되면 객체의 배열을 어떻게 초기화 할 수 있습니까? C ++

  4. 4

    생성자가 초기화되면 객체의 배열을 어떻게 초기화 할 수 있습니까? C ++

  5. 5

    위임 생성자의 이니셜 라이저 목록에서 벡터를 초기화 할 수 없습니다.

  6. 6

    wx.App이 생성되기 전에 wx.Font 객체를 어떻게 초기화 할 수 있습니까?

  7. 7

    다른 클래스의 생성자의 도움으로 객체를 초기화 할 수 있습니까?

  8. 8

    생성자 초기화 목록에서 정적 변수를 초기화 할 수 없지만 생성자 본문에서는 할 수있는 이유

  9. 9

    C ++ std :: function을 초기화 할 때 자리 표시자를 참조 / 참조 인수에 어떻게 바인딩 할 수 있습니까?

  10. 10

    비 const 참조를 다른 유형의 객체로 초기화 할 수없는 이유는 무엇입니까?

  11. 11

    varargs 생성자의 이니셜 라이저 목록에서 벡터를 어떻게 초기화 할 수 있습니까?

  12. 12

    객체 초기화에서 할당 연산자에 의해 생성자에 매개 변수를 전달할 수있는 이유는 무엇입니까?

  13. 13

    생성자 초기화 목록으로 구조체를 초기화하는 데 문제가 있습니다.

  14. 14

    초기화 목록-같은 클래스의 다른 멤버로 멤버를 초기화 할 수 있습니까?

  15. 15

    초기화가있는 선언에서 초기화되지 않은 데이터에 대한 참조를 사용할 수 있습니까?

  16. 16

    init () 중에 객체 초기화를 어떻게 취소 할 수 있습니까?

  17. 17

    객체 데이터가 C ++ 생성자에서 잘못된 순서로 초기화되면 어떤 종류의 버그가 발생할 수 있습니까?

  18. 18

    생성자 초기화 목록에서 기본 ctor를 호출 할 필요가 있습니까?

  19. 19

    부분 전문화가 전문화의 인수 목록에서 sizeof (T)를 참조 할 수 있습니까?

  20. 20

    집계 초기화가 집계의 이전 요소를 참조 할 수 있습니까?

  21. 21

    상호 의존적 인 최종 참조를 어떻게 초기화 할 수 있습니까?

  22. 22

    자바 스크립트에서 자기 참조 함수를 사용하여 객체의 속성을 정의 할 수 있습니까?

  23. 23

    생성자에서 this.fieldname을 사용하여 기본 클래스의 필드를 초기화 할 수 있습니까?

  24. 24

    초기화 목록을 사용하여 복사 생성 중에 벡터의 값 배열을 초기화 할 수 있습니까?

  25. 25

    지정된 이니셜 라이저가 C99에서 초기화하는 변수를 합법적으로 참조 할 수 있습니까?

  26. 26

    C에서 구조체를 초기화하려고 할 때 오류가 발생했습니다.

  27. 27

    가 선언되기 전에 왜 블록 초기화 나의 인스턴스 필드를 참조 할 수 있습니다?

  28. 28

    onAttach에서 인터페이스 객체를 초기화 할 수 없습니까?

  29. 29

    Julia에서 고차 텐서를 어떻게 초기화 할 수 있습니까?

뜨겁다태그

보관