如需簡單指派 (C++)
如需簡單指派運算子 (=) 會儲存在第一個運算元所指定的物件中的第二個運算元的值。 如果這兩個物件的算術型別,右運算元會轉換成最左邊,至之前儲存值的型別。
常數和動態型別的物件可指派給左值的型別,都只是暫時性或不致於 const 或動態。
指派給物件的類別型別 (結構、 等位,類別型別) 都由函式稱為運算子 =。 這個運算子函式的預設行為是執行位元的複本。 不過,您可以使用多載的運算子進行修改此行為。 (請參閱多載運算子如需詳細資訊。)
從指定的基底類別的任何明確地在衍生類別的物件可以指派給基底類別的物件。 反向不成立,因為沒有基底類別的衍生類別將隱含轉換,但不是能從以基底類別衍生的類別。 例如:
// 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引數,並將結果複製。