Download presentation
Presentation is loading. Please wait.
Published byCathleen Watson Modified over 9 years ago
1
Programming in C++ Michal Brabec Petr Malý
2
Class / Struct Class / Struct consists of: data members function members constructors destructor copy constructor assignment operator other operators conversion operators
3
Copy Constructor ClassName(const ClassName& obj) { } All members are copied to the members of a new object Compiler generates default implementation Used together with assignment operator
4
Assignment Operator ClassName& operator=(const ClassName& obj); Compiler generates default implementation All members are assigned to members of a new object Used together with copy constructor
5
Task Use the solution of the second task (MyArray) from the last practicals Create a global function Replace which takes three arguments InputArray ElementToFind NewElement Function returns a new copy of MyArray where all ElementToFind are replaced for NewElement Verify your soulution using Test class as element type of your array
6
Shallow Copy class MyClass { public: int* member1; int member2; int member3; }; MyClass myClass1; myClass1.member1 = new int[3] { 1, 2, 3}; myClass1.member2 = 4; myClass1.member3 = 5; MyClass myClass2 = myClass1; myClass1.member1[0] = 1000; cout << myClass1.member1[0] << endl; // 1000 cout << myClass1.member1[1] << endl; // 2 cout << myClass1.member1[2] << endl; // 3 cout << myClass1.member2 << endl; // 4 cout << myClass1.member3 << endl; // 5 cout << myClass2.member1[0] << endl; // 1000 cout << myClass2.member1[1] << endl; // 2 cout << myClass2.member1[2] << endl; // 3 cout << myClass2.member2 << endl; // 4 cout << myClass2.member3 << endl; // 5 addr4 myClass1: 1000 23 5 addr4 myClass2: 5
7
Deep Copy class MyClass { public: int* member1; int member2; int member3; MyClass() = default; MyClass(const MyClass& obj) : member2(obj.member2), member3(obj.member3) { member1 = new int[3]; for (int i = 0; i < 3; ++i) member1[i] = obj.member1[i]; } }; MyClass myClass1; myClass1.member1 = new int[3] { 1, 2, 3}; myClass1.member2 = 4; myClass1.member3 = 5; MyClass myClass2 = myClass1; myClass1.member1[0] = 1000; cout << myClass1.member1[0] << endl; // 1000 cout << myClass1.member1[1] << endl; // 2 cout << myClass1.member1[2] << endl; // 3 cout << myClass1.member2 << endl; // 4 cout << myClass1.member3 << endl; // 5 cout << myClass2.member1[0] << endl; // 1 cout << myClass2.member1[1] << endl; // 2 cout << myClass2.member1[2] << endl; // 3 cout << myClass2.member2 << endl; // 4 cout << myClass2.member3 << endl; // 5 addr4 myClass1: 123 5 addr4 myClass2: 5 1000 23
8
Operators RetType operator op (Args) { } Defined as members of a class Some operators may be defined outside the class friend keyword is used to allow to access to private class members
9
Conversion Operators operator Type (Args) { } Defined as members of a class Return type is not at the beginning of the declaration Result is returned by value
10
Task Create operator + for MyArray class The operator concatenates two arrays Create a conversion operator to std::vector
11
Task (optional) Use code from previous practicals Create a program which loads the complex numbers from the file The program stores the number ordered by their absolute value Use STL functions / containers
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.