Простое присвоение (C++)
Простой оператор присваивания (=) приводит к тому, что значения второго операнда хранится в объекте, определенном первым операндом.Если оба объекта арифметических типов, то правый операнд преобразован в тип, до хранения значения.
Объекты const и volatile типы могут быть присвоены l-значениям типов, просто переменными, const или volatile не ни.
Назначение к объектам типа (класса, структуры, объединения и типов классов) выполняется функцией с именем operator=.По умолчанию функциональности этого оператора функции для выполнения побитовую копию; однако эти расширения функциональности можно изменить с помощью перегруженные операторы.(См. Перегруженные операторы дополнительные сведения).
Объект any однозначно производного класса из данного базового класса может быть присвоено объекту базового класса.Reverse не имеет значение true, так как неявное преобразование из производного класса к базовому классу, но не из базового класса к производному классу.Примеры.
// 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;
может иметь следующие эффекты:
Вызовите функции для operator= UserType2при условии предоставляется с operator= UserType1 аргумент.
Вызовите функцию явного преобразования UserType1::operator UserType2, если такая функция существует.
Вызовите конструктор UserType2::UserType2, если такой конструктор существует, то предполагается a UserType1 аргумент и копирует результат.