Language
한국어
프로그래밍 관련 질문 사항을 올려주세요. 도움을 받기 위해서는 최대한 질문을 상세하게 작성하고 도움을 준 분께는 감사의 표시를 합시다.
  • 김상형님 책 p65 생성자의 명시적 호출 의문
  • 조회 수: 1340, 2016-04-10 17:34:30(2016-04-09)
  • 책을 보면

    암시적인 방법 Position Here(20,10,'A');

    명시적인 방법 Position Here=Position (20,10,'A');

     

    이라고 나와있는데 아무리봐도 책 내용이 의심이 됩니다

    왜냐하면

     

    #include <iostream>
    using namespace std;

    class First
    {
     int one;
    public:
     explicit First(int num1) :one(num1)
     {}
     explicit First(const First &copy) :one(copy.one)
     {}
    };


    int main(void)
    {
     First test=First(10);
     First test2=test;

     return 0;
    }
    이렇게 되면 암시적 변환에 사용할 수 있는 비명시적 생성자가 없습니다. 오류가 나오기 때문이죠

    이거 책 내용이 잘못된거 아닌가요?

댓글 4

  • Code_Smith

    2016.04.10 01:08

    암시적 변환에 사용할 수 있는 비명시적 생성자가 없다는 말 자체부터가 맞지 않습니다.
    암시적 변환은 명시적 생성 방법에서 사용됩니다. 비명시적(암시적)에서 사용되지도 않으며, "생성자"에서 사용 된다는 말은 옳지 않습니다.
    즉, 작성자분의 코드에서 explicit 키워드를 제외하였을때,
    First test3 = 10; 같은 코드는 유효하며, 실제로 오류도 나지 않습니다.
    이러한 문제를 막기 위해서 사용되는게 explicit 입니다.
    explicit는 명시적 방법만 사용할래! 라는 것보다는 이 방법으로만 생성할래! 라는 것에 가까운데,
    그래서 작성자분의 코드에서
    First test1(10);
    First test2(test1); 처럼 작성하는 것은 유효합니다.
  • 김코딩

    2016.04.10 01:51

    먼저 답변 감사드립니다
    제가 말하고자 하는것은
    암시적인 방법 Position Here(20,10,'A');
    명시적인 방법 Position Here=Position (20,10,'A');
    이라고 나온 책 내용이 사실상 완전 반대
    명시적인 방법 Position Here(20,10,'A');
    묵시적인 방법 Position Here=Position (20,10,'A');
    이기 때문입니다
    그렇게 생각하는 이유는 explicit 로 나온 결과때문이고요
  • Code_Smith

    2016.04.10 15:34

    아마 생성자 호출의 암시적 방법, 명시적 방법이라는 것이 실제 국제 표준처럼 통용되는 말이 아니라 혼동이 있으신 것 같습니다. 게다가 이 명시적과 암시적의 기준이 부적합하다고 생각되기도 합니다. 저도 한참동안 왜 저자께서 이렇게 표기했을까, 라고 생각했습니다.
    아마 책에는 나와있지 않지만 암시적인 방법과 명시적인 방법의 차이에 기준을 생각해보면,
    Position Here(20,10,'A'); 는 객체의 생성자를 호출하면서 동시에 초기화하는 것이고,
    Position Here = Position(20,10,'A'); 는 어떤 값을 가진 객체를 생성하고, 그 다음 Here를 그 객체로 초기화 한다고 볼 수 있습니다.
    즉, 생성자 호출과 객체 생성이 동시에 이루어져, 이 두 과정이 명시되어있지 않기 때문에 암시적인 방법, 명시적인 방법이라고 부르는 듯 합니다.
  • 김코딩

    2016.04.10 17:34

    답변 감사드립니다

    초반에 책 내용중 상속을 간단히 재사용이라고 쓴 것에 이어

    이런 내용때문에 책에 신뢰성이 점점 떨어지더군요

    초반부부터.. 나랑은 좀 맞지 않는 책이구나 하는 생각..

    또 inline에 관한 의문(이건 제가 잘 모르는 내용이라서 저자가 잘못쓴건 아닐거라 생각합니다)

    점이 있는 데 기왕 설명했다면 자세한 설명을 해줬으면 하는데

    좀 두루뭉실하게 나와있어서 책에 대한 환불 고민을 좀 했었습니다

현재 게시판 기능 테스트중입니다. 디자인이나 게시판 구성은 언제든지 예고없이 변경될 수 있습니다.