Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming in C++ Michal Brabec Petr Malý. Class / Struct Class / Struct consists of: data members function members constructors destructor copy constructor.

Similar presentations


Presentation on theme: "Programming in C++ Michal Brabec Petr Malý. Class / Struct Class / Struct consists of: data members function members constructors destructor copy constructor."— Presentation transcript:

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


Download ppt "Programming in C++ Michal Brabec Petr Malý. Class / Struct Class / Struct consists of: data members function members constructors destructor copy constructor."

Similar presentations


Ads by Google