2012-01-10 4 views
2

Предположим, что класс foo не имеет перегруженного оператора присваивания. Что происходит, когда задание a = b; предоставляется для двух объектов foo? варианты:Вызывается конструктор копирования, если оператор присваивания не определен?

  1. используется автоматический оператор Назначение
  2. Копия конструктор
+0

Является ли это домашнее задание? Пожалуйста, пометьте его как таковой, если он есть. –

+1

Я действительно не понимаю, почему вы назвали этот вопрос таким образом. – Griwes

+0

Не думаю, что название подходит к вопросу очень хорошо. –

ответ

4

Это зависит:

A a; 
//this is not an assignment, it is equivalent to A b(a); 
A b = a; //default copy constructor is called 

A c; 
//assignment 
c = a; //default assignment operator is called 
+1

IIRC первый не является присвоением, хотя он использует символ '=', он инициализируется и эквивалентен 'A b (a);'. – delnan

+0

@ delnan yup, вот почему я сказал, что вызван конструктор копирования. –

+0

Мое беспокойство заключается в том, считается ли оно присвоением (поскольку вопрос задает только вопрос о том, что происходит при присваивании без определения 'operator ='). – delnan

Смежные вопросы