Определите инварианты для vector (параграф Е.3) с возможностью v==0 и без таковой (параграф Е.3.5).
Ну господа тут видно что нужно перегрузить оператор сравнения и добавить видимо переменную или мы просто сравнивать будем с size. Я не буду переписывать тот вариант что есть в книге, я просто щас определю ключевые моменты и новый вектор свой. Можно оператор преобразования использовать для возврата int.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> using std::cout; using std::endl; class vector { int* p; int size_t; public: vector(int ss=0,int val=0) :size_t(ss) { p=new int[ss]; for(int i=0;i<size_t;i++)p[i]=val; } int size(){return size_t;} operator int(){return size_t;} }; int main() { vector v(4,8); cout <<"v.size()= "<<v.size()<<endl; cout <<(v==0)<<endl; vector v1; cout <<(v1==0)<<endl; return 0; } |
[youtube]https://www.youtube.com/watch?v=jmJA-gW5b44[/youtube]