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

2,667 views

Published on

Конструктор копирования.
Оператор присвоения.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,667
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Язык С++ Конструктор копирования Оператор присвоения Алексей Бованенко пятница, 8 января 2010 г.
  2. 2. Введение • Конструктор копирования • Позволяет создавать новый экземпляр класса на основе уже существующего • Создание конструктора копирования • Создается программистом • Может быть создан компилятором пятница, 8 января 2010 г.
  3. 3. Пример конструктора копирования • class TestClass{ public: TestClass(); TestClass(const TestClass& origin); ... private: int i; std::string s; }; пятница, 8 января 2010 г.
  4. 4. Определение конструктора копирования • TestClass::TestClass(){} • TestClass::TestClass(const TestClass& origin) :i(origin.i) ,s(origin.s){} пятница, 8 января 2010 г.
  5. 5. Оператор присвоения пятница, 8 января 2010 г.
  6. 6. Введение • Различие копирующего конструктора и оператора присвоения • Копирующий конструктор инициализирует “чистую” память • Оператор присвоения работает с уже созданным объектом пятница, 8 января 2010 г.
  7. 7. Оператор присвоения • ClassName& operator= (const ClassName& cn) { // присвоение полей return *this; } пятница, 8 января 2010 г.
  8. 8. Пример использования • Класс TestClass • class TestClass{ public: TestClass(); TestClass(int j, std::string& s1); TestClass(const TestClass& tc); TestClass& operator=(const TestClass& tc); private: int i; std::string s; }; пятница, 8 января 2010 г.
  9. 9. Определение конструктора копирования • TestClass::TestClass(const TestClass& tc) :i(tc.i) ,s(tc.s){ std::cout<<"In ctor"<<std::endl; } пятница, 8 января 2010 г.
  10. 10. Оператор присвоения • TestClass& TestClass::operator=(const TestClass& tc) { i=tc.i+10; s ="operator"; return *this; } пятница, 8 января 2010 г.
  11. 11. Функция main • std::string s="Hi"; TestClass tc(10,s); std::cout<<"tc: "<<tc<<std::endl; TestClass tc1(tc); std::cout<<"tc1: "<<tc1<<std::endl; std::string s1="aaaaaa"; TestClass tc2(20,s1); tc2=tc; std::cout<<"tc2: "<<tc2<<std::endl; пятница, 8 января 2010 г.
  12. 12. Результат пятница, 8 января 2010 г.
  13. 13. Конец Вопросы? e-mail: a.bovanenko@gmail.com пятница, 8 января 2010 г.

×