Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class Test
- {
- public:
- int val;
- bool flag;
- int getVal() { return val; };
- bool getFlag() { return flag; };
- };
- 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';
- };
- void printDynArrEl(DynArray& arr, int idx)
- {
- std::cout << arr.getElem(idx) << ' ';
- }
- DynArray mkArray(int size)
- {
- DynArray arr{ size };
- arr.randomize();
- return arr;
- }
- class Fraction
- {
- int numerator;
- int denominator;
- //mutable bool cached;
- //mutable int cachedMegaVal;
- public:
- Fraction(const Fraction& fract) : numerator{ fract.numerator }, denominator{fract.denominator} { std::cout << "Fraction COPY constructed for " << this << '\n'; };
- Fraction(int num, int denom=1) : numerator{ num }, denominator{ denom ? denom : 1 } { std::cout << "Fraction constructed for " << this << '\n'; };
- Fraction() : Fraction(1) {};
- ~Fraction() { std::cout << "Fraction destructed for " << this << '\n'; };
- void setNumerator(int num) { numerator = num; };
- int getNumerator() const { return numerator; };
- void setDenominator(int denom) { denominator = denom ? denom : 1; };
- int getDenominator() const { return denominator; };
- void print() const;
- Fraction& mul(const Fraction& fract) { numerator *= fract.getNumerator(); denominator *= fract.getDenominator(); return *this; };
- Fraction& mul(int num) { numerator *= num; return *this; };
- Fraction& div(const Fraction& fract) { numerator *= fract.getDenominator(); denominator *= fract.getNumerator(); return *this; };
- Fraction& div(int num) { denominator *= num; return *this; };
- //int megaCalc() const { /* hard calculation that takes looooong time to complete*/};
- //int getMegaVal() const { if (!cached) { cachedMegaVal = megaCalc(); cached = true; }; return cachedMegaVal; };
- };
- void Fraction::print() const
- {
- std::cout << '(' << numerator << " / " << denominator << ")";
- //std::cout << '(' << getNumerator() << " / " << getDenominator() << ")";
- };
- //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{ DynArray{ 65 } }; //arr1.arr //arr1.size <- this = &arr1
- //arr1 = 'A';
- //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 };
- //const int answer{ 42 };
- //answer = 33;
- Fraction a{ 2,3 };
- const Fraction b{1,3};
- a.mul(b);
- a.print(); std::cout << '\n';
- //b = a;
- //b.print(); std::cout << '\n';
- //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