Вопросы по перегрузке оператора - PullRequest
1 голос
/ 14 сентября 2010

Итак, у моего профессора есть пример файла .h со следующими операторами в конце

//ComplexNumber.h

#include <iostream>
using namespace std;

#ifndef MY_COMPLEX_H
#define MY_COMPLEX_H

class complexNumber {
public:
    complexNumber();
    complexNumber(double a, double b);
    void setReal(double a);
    void setImaginary(double b);
    double getReal();
    double getImaginary();
    void printComplex();

private:
    double realPart;
    double imaginaryPart;
};

complexNumber add(complexNumber A, complexNumber B);
complexNumber subtract(complexNumber A, complexNumber B);
complexNumber multiply(complexNumber A, complexNumber B);
complexNumber divide(complexNumber A, complexNumber B);

complexNumber operator +(complexNumber A, complexNumber B);
complexNumber operator -(complexNumber A, complexNumber B);
complexNumber operator *(complexNumber A, complexNumber B);
complexNumber operator /(complexNumber A, complexNumber B);

ostream & operator << (ostream &outs, complexNumber A);

// istream & operator >> (istream &ins, complexNumber &A);

#endif

, где он получает complexNumber A и complexNumber B?Я нигде не вижу их как переменных ...

1 Ответ

4 голосов
/ 14 сентября 2010

A и B являются функциональными параметрами типа complexNumber. В объявлении, которое не является определением, имена A и B ничего не значат; следующие два одинаковы:

complexNumber add(complexNumber A, complexNumber B);
complexNumber add(complexNumber  , complexNumber  );

Тем не менее, рекомендуется называть параметры именами, поскольку обычно это облегчает понимание объявлений функций и помогает самодокументированию кода.

В определении, если вы хотите использовать аргумент, переданный для данного параметра, у параметра должно быть имя, иначе нет способа его идентифицировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...