Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class VEC;
- class VEC {
- public:
- // default constructor
- VEC() {}
- // dimensions constructor
- VEC(int d) {
- dim = d;
- data = new double[d];
- }
- // copy constructor for &v
- VEC(const VEC &v) {
- std::cout << "\n Copy constructor (VEC) called!!";
- if (data)this->~VEC();
- dim = v.dim;
- data = v.data;
- if (data) memcpy((data = new double[dim]), v.data, sizeof(double) * dim);
- }
- // assignment constructor for &v
- void operator = (const VEC &v)
- {
- std::cout << "\n Assignment constructor (VEC &v) called!!";
- if (data)this->~VEC();
- dim = v.dim;
- data = v.data;
- if (data) memcpy((data = new double[dim]), v.data, sizeof(double) * dim);
- }
- // assignment constructor for v
- void operator = (const VEC v)
- {
- std::cout << "\n Assignment constructor (VEC v) called!!";
- if (data)this->~VEC();
- dim = v.dim;
- data = v.data;
- if (data) memcpy((data = new double[dim]), v.data, sizeof(double) * dim);
- }
- // destructor
- ~VEC() {
- std::cout << "\n ~VEC got called. checking if data is true.";
- if (data) {
- std::cout << "\n data is true. attempting to delete data at address " << data;
- delete[] data;
- std::cout << "\n deletion succesful";
- }
- else std::cout << "\n data is false.";
- }
- // copy
- void copy(const VEC &v)
- {
- std::cout << "\n attempting to copy!";
- dim = v.dim;
- data = v.data;
- if (data) memcpy((data = new double[dim]), v.data, sizeof(double) * dim);
- std::cout << "\n Original (v.data)'s address == " << v.data;
- std::cout << "\n New (data)'s address == " << data;
- std::cout << "\n Copy operation successful! ";
- }
- int dim;
- double* data;
- };
- VEC Product(double x, VEC v) {
- int const dim = v.dim;
- VEC r(dim);
- for (int i = 0; i < v.dim; ++i) {
- r.data[i] = v.data[i] * x;
- }
- return VEC(r);
- }
- VEC EmptyVector(int n) {
- VEC r(n);
- std::cout << "\n empty vec start. \n vec address == " << &r << " and its data address == " << r.data;
- for (int i = 0; i < n; ++i) {
- r.data[i] = 0;
- }
- return VEC(r);
- }
- VEC UnitVector(int i, int n) {
- VEC r;
- std::cout << "\n unit vec start. \n vec address == " << &r << " and its data address == " << r.data;
- r.copy(EmptyVector(n));
- std::cout << "\n unit vec after copy. \n vec address == " << &r << " and its data address == " << r.data;
- r.data[i] = 1;
- return VEC(r);
- }
- int main() {
- std::cout << "\n attempting to calculate the gravity";
- VEC gravity = Product(5, UnitVector(1, 2));
- std::cout << "\n gravity vector calculation complete.";
- int pause = 0;
- std::cin >> pause;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement