⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠ You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’

Excalidraw Data

Text Elements

class Person {
private:
int age;
double size;
public:

Constructors

};

Person person2

age = 25
size = 175.5

Default Constructor:

Syntax:
Person() {

}

or
Person() = default;

Person person1;

Person person1

age = NULL
size = NULL

Parameterized Constructor:

Syntax:
Person(int a, double s)
: age(a), size(s) { }

No default keyword

Person person2(25, 175.5);
or
Person person2{25, 175.5};

Person person2

age = 25
size = 175.5

Copy Constructor:

Syntax:
Person(const Person& other)
: age(other.age), size(other.size) { }
or
Person(const Person& other) = default;

Person person3 = person2;
or
Person person3(person2);

Person person3

age = 25
size = 175.5

New Object

Example of class Person:

Person person2

age = 25
size = 175.5

Move Constructor:

Syntax:
Person(Person&& other)
: age(other.age), size(other.size)
{
other.age = 0;
other.size = 0;
}
or
Person(Person&& other) = default;

Person person4 = std::move(person2);

Person person4

age = 25
size = 175.5

New Object

Person person2

age = 0
size = 0

Person person3

age = 25
size = 175.5

Copy Assignment Operator:

Syntax:
Person& operator=(const Person& other)
{
if (this != &other) {
age = other.age;
size = other.size;
}
return *this;
}
or
Person& operator=(const Person& other)
= default;

Person person5(30, 180.5);
person5 = person3;

Person person5

age = 30
size = 180.5

Already existing object

da person5 schon initialisiert ist, muss man copy Zuweisung aufrufen

25

175.5

Move Assignment Operator:

Syntax:
Person& operator=(Person&& other)
{
if (this != &other) {
age = other.age;
size = other.size;
other.age = 0;
other.size = 0;
}
return *this;
}
or
Person& operator=(Person&& other)
= default

Person person3

age = 25
size = 175.5

Person person6(35, 185.5);
person6 = std::move(person3);

Person person6

age = 35
size = 185.5

Already existing object

da person6 schon initialisiert ist, muss man move Zuweisung aufrufen

25

175.5

Person person2

age = 0
size = 0