Created
December 23, 2022 20:42
-
-
Save loneshark99/6dfaf3fc243fd9ffad4454e3fccce621 to your computer and use it in GitHub Desktop.
C++ Copy Assignment and Copy Constructor Operator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <string> | |
class Vector3 | |
{ | |
public: | |
float x,y,z; | |
}; | |
class Array | |
{ | |
public: | |
Array() | |
{ | |
std::cout << "CONSTRUCTOR CALLED" << std::endl; | |
data = new int[10]; | |
for (size_t i = 0; i < 10; i++) | |
{ | |
data[i] = i*i; | |
} | |
} | |
Array(const Array& rhs) | |
{ | |
std::cout << "COPY CONSTRUCTOR CALLED" << std::endl; | |
data = new int[10]; | |
for (size_t i = 0; i < 10; i++) | |
{ | |
data[i] = rhs.data[i]; | |
} | |
} | |
//Copy Assignment Operator | |
// Object is already constructed we are just making a copy later... | |
Array& operator=(const Array& rhs) | |
{ | |
std::cout << "COPY Assignment Operator CALLED" << std::endl; | |
if (&rhs == this) | |
{ | |
return *this; | |
} | |
delete[] data; | |
data = new int[10]; | |
for (size_t i = 0; i < 10; i++) | |
{ | |
data[i] = rhs.data[i]; | |
} | |
return *this; | |
} | |
void PrintArray() | |
{ | |
for (size_t i = 0; i < 10; i++) | |
{ | |
std::cout << data[i] << std::endl; | |
} | |
std::cout << "******************************" << std::endl; | |
} | |
void SetData(int index, int value) | |
{ | |
data[index] = value; | |
} | |
~Array() | |
{ | |
delete[] data; | |
} | |
private: | |
int* data; | |
}; | |
int main() | |
{ | |
// Copy Constructor | |
Array myArray; | |
Array myArray2 = myArray; | |
myArray.SetData(0,100000); | |
myArray.SetData(1,200000); | |
myArray.SetData(2, 300000); | |
myArray.PrintArray(); | |
myArray2.PrintArray(); | |
// Copy Assignment Operator | |
Array myArray3; | |
myArray3 = myArray; | |
myArray3.PrintArray(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment