Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lect07.pdf
Скачиваний:
6
Добавлен:
06.02.2016
Размер:
421.2 Кб
Скачать

Пример

class SquareMatrix: public Matrix { public:

SquareMatrix(int n) : Matrix(n, n) { setResName("Scalar product");

} cout << "Created square matrix!" << endl;

~SquareMatrix() {

} cout << "Destroyed square matrix!" << endl; };void calc();

Пример

//Получить скалярное произведение

//главной и побочной диагонали void SquareMatrix::calc() {

result = 0;

for (int i=0; i<n; i++)

result += *(data + i*n + i)* *(data + i*n + } n-i-1);

int _tmain(int argc, _TCHAR* argv[]) { MathEntity * entities[3] = {

new Vector(5), new Matrix(3,4), }; new SquareMatrix(5)

Пример

for (int i=0; i<3; i++) {

cout << entities[i]->getResName() << " = " << entities[i]->getRes() << endl;

} delete entities[i];

cin.ignore(); } return 0;

Результаты

Created entity!

Created vector!

Created entity!

Created matrix!

Created entity!

Created matrix!

Created square matrix! Modulus = 13.9284 Destroyed entity! Geometric mean = 4.57455 Destroyed entity!

Scalar product = 4.74292 Destroyed entity!

Виртуальныедеструкторы

Вданномпримере,несмотряна полиморфностьклассов,они удаляютсякакэкземплярыбазового класса.Этонекорректно!

Деструкторвлюбойиерархии,где хотябыводномклассе требуется освободитьресурсы,долженбыть виртуальным!

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]