⚠ 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