Рубрики

Конструктор копирования против оператора присваивания в C ++

Уровень сложности: Новичок

Рассмотрим следующую программу на C ++.

#include<iostream> 
#include<stdio.h> 

  

using namespace std; 

  

class Test 

    public

    Test() {} 

    Test(const Test &t) 

    

        cout<<"Copy constructor called "<<endl; 

    

      

    Test& operator = (const Test &t)

    {

        cout<<"Assignment operator called "<<endl;

        return *this;

    

}; 

  
// Код драйвера

int main() 

    Test t1, t2; 

    t2 = t1; 

    Test t3 = t1; 

    getchar(); 

    return 0; 

Выход:
Оператор присваивания называется
Копировать конструктор называется

Конструктор копирования вызывается, когда новый объект создается из существующего объекта, как копия существующего объекта (см. Этот G-Fact). И оператор присваивания вызывается, когда уже инициализированному объекту присваивается новое значение из другого существующего объекта.

t2 = t1;  // вызывает оператор присваивания, такой же как "t2.operator = (t1);"

Test t3 = t1;  // вызывает конструктор копирования, такой же как "Test t3 (t1);"

Ссылки:
http://en.wikipedia.org/wiki/Copy_constructor

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Конструктор копирования против оператора присваивания в C ++

0.00 (0%) 0 votes