Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loneshark99/6dfaf3fc243fd9ffad4454e3fccce621 to your computer and use it in GitHub Desktop.
Save loneshark99/6dfaf3fc243fd9ffad4454e3fccce621 to your computer and use it in GitHub Desktop.
C++ Copy Assignment and Copy Constructor Operator
#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