단순 할당 (C++)
단순 대입 연산자 (=)가 첫 번째 피연산자에 지정 된 개체에 저장 하 여 두 번째 피연산자의 값이 됩니다.두 개체 모두의 산술 형식이 면 형식에 값을 저장 하기 전에 왼쪽에서 오른쪽 피연산자가 변환 됩니다.
개체 형식의 const 및 volatile 단지 일시적 이거나는 const 또는 volatile 형식 l-값을 할당할 수 있습니다.
클래스 형식 (구조체, 공용 구조체 및 클래스 형식)의 개체 할당 연산자 라는 함수에서 수행 됩니다 =.이 연산자 함수의 기본 동작을 비트 복사를 수행 하는 것; 그러나 오버 로드 된 연산자를 사용 하 여이 동작을 수정할 수 있습니다.(참조 하십시오 오버 로드 연산자 에 대 한 자세한 내용은.)
개체를 명확 하 게 파생된 클래스는 해당된 기본 클래스에서 기본 클래스 개체에 할당할 수 있습니다.반대로 클래스를 기반으로 하는 파생된 클래스에서 암시적으로 변환 하기 때문에 마찬가지입니다 있지만 파생 클래스에서 기본 클래스에.예를 들면 다음과 같습니다.
// expre_SimpleAssignment.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class ABase
{
public:
ABase() { cout << "constructing ABase\n"; }
};
class ADerived : public ABase
{
public:
ADerived() { cout << "constructing ADerived\n"; }
};
int main()
{
ABase aBase;
ADerived aDerived;
aBase = aDerived; // OK
aDerived = aBase; // C2679
}
참조 형식에 할당 하면 참조가 가리키는 개체를 만들어지는 것 처럼 동작 합니다.
클래스 형식의 개체에 대 한 할당에서 초기화 다릅니다.어떻게 할당 하 고 초기화를 설명 하기 위해 수 있습니다, 그리고 코드를 고려 하십시오.
UserType1 A;
UserType2 B = A;
앞의 코드에서는 이니셜라이저를 보여 줍니다. 이 대 한 생성자를 호출 UserType2 형식의 인수를 사용 하는 UserType1.코드를 제공합니다.
UserType1 A;
UserType2 B;
B = A;
할당 문의
B = A;
다음 효과 중 하나를 사용할 수 있습니다.
함수 연산자를 호출 = UserType2, 연산자 제공 = 함께 제공 되는 UserType1 인수입니다.
명시적 변환 함수를 호출할 UserType1::operator UserType2, 이러한 함수를 존재 하는 경우.
생성자를 호출 UserType2::UserType2, 사용이 생성자에서 존재 하는 경우는 UserType1 인수 결과 복사 합니다.