2011-11-15 2 views
0

여기에서 가져온 것 : http://www.cplusplus.com/doc/tutorial/inheritance/기본 클래스에서 상속 된 것은 무엇입니까?

기본 클래스에서 상속 된 것은 무엇입니까?

its constructor and its destructor 
its operator=() members 
its friends 

내 질문은, 연산자 =() 멤버는 무엇인가 : 원칙적으로 는 파생 클래스를 제외한 기본 클래스의 모든 구성원을 상속?

+1

쓰레기 cplusplus.com 분출물을 합리화하려는 시도는 어리석은 짓입니다! [좋은 책] (http://jcatki.no-ip.org/fncpp/Resources)을 구입하십시오. –

답변

0

스마트 포인터 본

2

operator=()은 할당 연산자입니다. 복수 멤버를 "멤버"로 지정하면 모든 할당 연산자 오버로드를 의미합니다 (예 : +=, *= 등). 넌 =() 연산자의 종류 등을 정의 할 수

+2

복수형이'operator ='의 다중 오버로드를 의미 할 수도 있습니다. –

+1

목록이 C++ 98에서만 부분적으로 정확하다는 점은 주목할 가치가 있습니다. C++ 98에서는 생성자가 상속되지 않습니다 ('operator ='가 상속되지만 자동으로 숨겨 짐). C++ 11에서는 생성자를 포함하지 않는 일반적인 상속과'using '을 통한 명시 적 생성자 상속을 구분해야합니다. –

1

그것은, 할당 연산자 Object& operator=(const Object& rhs) 트랜스퍼 연산자 Object& operator=(Object& rhs) 수있다. 아주 쓸모없는 것조차. 그러나 그들 중 누구도 어린이 수업에 상속되지 않습니다. 귀하의 링크 사이트에서 좀 더 명확하게하기 위해 예제를 약간 변경했습니다. 언급 한 오류 때문에이 예제는 컴파일되지 않습니다.

class mother { 
public: 
    mother() 
    { cout << "mother: no parameters\n"; } 
    explicit mother (int a):m_int(a) 
    { cout << "mother: int parameter\n"; } 

    mother& operator=(mother const& rhs) 
    { 
     if(&rhs != this) 
     { 
      m_int = rhs.m_int; 
     } 
     return *this; 
    } 

    mother& operator=(int i) 
    { 
     m_int = i; 
     return *this; 
    } 
private: 
    int m_int; 
}; 

class son : public mother { 
public: 
    explicit son (int a) : mother (a) 
    { cout << "son: int parameter\n\n"; } 
}; 
int main() 
{ 
    mother mom(2); 
    son daniel(0); 
    mom = 3; 
    daniel = 4; // compile error 
    daniel = mom; // also error 
} 
0

operator=()는 클래스 할당 연산자, 그리고 쉽게 지루하게 porcess을 통해 매번 단계로하지 않고 값의 형태를 다른 클래스의 하나 개의 객체를 할당 할 수 있도록하려면이 정의된다. 이 과정은 overloading라고하며, 위키 백과는 C++ documentation과 마찬가지로 주제를 다루는 great article입니다.

관련 문제