logo
inf_otvety_24-40

Определение методов класса

Данные рассуждения будут яснее, если мы определим, как выполняется операция сложения.

void

Complex::Add(Complex x)

{

this->real = this->real + x.real;

this->imaginary = this->imaginary +

x.imaginary;

}

Первые две строки говорят о том, что это метод Add класса Complex. В фигурных скобках записано определение операции или метода Add. Это определение означает следующее: для того чтобы прибавить значение объекта класса Complex к данному объекту, надо сложить вещественные части и запомнить результат в атрибуте вещественной части текущего объекта. Точно так же следует сложить мнимые части двух комплексных чисел и запомнить результат в атрибуте текущего объекта, обозначающем мнимую часть.

Запись this-> говорит о том, что атрибут принадлежит к тому объекту, который выполняет метод Add ( объекту, получившему сообщение Add ). В большинстве случаев this-> можно опустить. В записи определения метода какого-либо класса упоминание атрибута класса без всякой дополнительной информации означает, что речь идет об атрибуте текущего объекта.

Теперь приведем этот небольшой пример полностью:

// определение класса комплексных чисел

class Complex {

public:

int real; // вещественная часть

int imaginary; // мнимая часть

void Add(Complex x);

// прибавить комплексное число

};

// определение метода сложения

void

Complex::Add(Complex x)

{

real = real + x.real;

imaginary = imaginary + x.imaginary;

}

int

main()

{

Complex number;

number.real = 1;

// первый объект класса Complex

number.imaginary = 3;

Complex num2;

// второй объект класса Complex

num2.real = 2;

num2.imaginary = 1;

number.Add(num2);

// прибавить значение второго

// объекта к первому

return 1;

}