Еще об операциях

<!--StartFragment -->

Другое направление развития - снабдить вектора операциями:


class Vec : public vector {
public:
Vec(int s) : (s) {}
Vec(Vec&);
~Vec() {}
void operator=(Vec&);
void operator*=(Vec&);
void operator*=(int);
//...
};


Обратите внимание на способ определения конструктора производного класса, Vec::Vec(), когда он передает свой параметр конструктору базового класса vector::vector() и больше не делает ничего. Это полезная парадигма. Операция присваивания перегружена, ее можно определить так:


void Vec::operator=(Vec& a)
{
int s = size();
if (s!=a.size()) error(\"плохой размер вектора для =\");
for (int i = 0; i

void error(char* p) {
cerr << p << \"\\n\";
exit(1);
}

void vector::set_size(int) { /*...*/ }
int& vec::operator[](int i) { /*...*/ }
main()
{
Vec a(10);
Vec b(10);
for (int i=0; i



Опубликовал admin
23 Мар, Вторник 2004г.



Программирование для чайников.