Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class DynArray
- {
- int* arr;
- int size;
- public:
- DynArray(int pSize) : arr{ new int[pSize] {} }, size{ pSize } {std::cout << "DynArr constructed for " << size << " elements, for " << this << '\n'; };
- DynArray() : DynArray(5) {};
- DynArray(const DynArray& obj);
- int getElem(int idx) { return arr[idx]; };
- void setElem(int idx, int val) { arr[idx] = val; };
- void print();
- void randomize();
- ~DynArray() { if (arr) { std::cout << "this->arr = " << this->arr << '\n'; delete[] arr; }; std::cout << "DynArr destructed for " << size << " elements, for " << this << '\n'; };
- };
- void DynArray::print()
- {
- for (int i{ 0 }; i < size; ++i)
- {
- std::cout << arr[i] << ' ';
- }
- std::cout << '\n';
- }
- void DynArray::randomize()
- {
- for (int i{ 0 }; i < size; ++i)
- {
- arr[i]=rand()%10;
- }
- }
- DynArray::DynArray(const DynArray& obj)
- : arr{ new int[obj.size] {} }, size{ obj.size }
- {
- for (int i{ 0 }; i < size; ++i)
- {
- arr[i] = obj.arr[i];
- };
- std::cout << "DynArr COPY constructed for " << size << " elements, for " << this << '\n';
- };
- class Fraction
- {
- int numerator;
- int denominator;
- public:
- Fraction(const Fraction& fract) : numerator{ fract.numerator }, denominator{fract.denominator} { std::cout << "Fraction COPY constructed for " << this << '\n'; };
- Fraction(int num, int denom) : numerator{ num }, denominator{ denom ? denom : 1 } { std::cout << "Fraction constructed for " << this << '\n'; };
- Fraction() : Fraction(1, 1) {};
- ~Fraction() { std::cout << "Fraction destructed for " << this << '\n'; };
- void setNumerator(int num) { numerator = num; };
- int getNumerator() { return numerator; };
- void setDenominator(int denom) { denominator = denom ? denom : 1; };
- int getDenominator() { return denominator; };
- void print();
- Fraction& mul(const Fraction fract) { numerator *= fract.numerator; denominator *= fract.denominator; return *this; };
- Fraction& mul(int num) { numerator *= num; return *this; };
- Fraction& div(const Fraction fract) { numerator *= fract.denominator; denominator *= fract.numerator; return *this; };
- Fraction& div(int num) { denominator *= num; return *this; };
- };
- void Fraction::print()
- {
- std::cout << '(' << numerator << " / " << denominator << ")";
- };
- //void foo(int& ref)
- //{
- // int val;
- // ref = 0;
- // std::cout << ref++ << '\n';
- //}
- int main()
- {
- //char* const str{ new char[14] {"Hello, world"} };
- //char* const str1{ new char[14] };
- //char* src{ str };
- //char* dest{ str1 };
- //while( *src)
- //{
- // *dest++ = *src++;
- //}
- //*dest = '\0';
- //std::cout << str << '\n' << str1 << '\n';
- //str1[0] = '#';
- //std::cout << str << '\n' << str1 << '\n';
- //std::cout << (void*)str << '\n' << (void*)str1 << '\n';
- //delete[] str1;
- //delete[] str;
- //return 0;
- DynArray arr1; //arr1.arr //arr1.size <- this = &arr1
- arr1.print();
- arr1.randomize();
- std::cout << "arr1\n";
- arr1.print();
- DynArray arr2{arr1}; //arr2.arr <= arr1.arr //arr2.size <= arr1.size <- this = &arr2
- std::cout << "arr2\n";
- arr2.print();
- arr2.setElem(0, 333);
- std::cout << "arr1\n";
- arr1.print();
- std::cout << "arr2\n";
- arr2.print();
- //int x;
- ////int& ref;
- ////ref = x;
- //foo(x);
- //foo(x);
- //std::cout << x << '\n';
- //Fraction a{ 1,3 };
- //Fraction b{ 2,5 };
- //Fraction c{a};
- //a.print(); std::cout << '\n';
- //b.print(); std::cout << '\n';
- //c.print(); std::cout << '\n';
- //a.mul(b).mul(b);
- //a.mul(2).mul(2);
- //a.print(); std::cout << '\n';
- //b.print(); std::cout << '\n';
- //b.div(4);
- //b.print(); std::cout << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement