Possible Duplicate:
c++ virtual function return typeDifferent возвращаемого значения из перегруженного класса
У меня есть простой, но запутанный вопрос здесь. Является ли законным иметь другой тип возвращаемого значения для переопределенных методов, чем абстракты, определенные в базовом классе? Я сделал это, и компилятор не пожаловался ... может кто-нибудь объяснить?
class MyBaseClass
{
int value;
public:
virtual int getValue() = 0;
};
class MyClass : public MyBaseClass
{
double value;
public:
virtual double getValue(); // here!!! return is double, not int
};
double MyClass::getValue()
{
return this->value;
}
компилятор полностью принял что-то подобное (MSVC унд MinGW) ... может кто-нибудь, пожалуйста, exaplain в какой степени это законно?
Почему ваш базовый класс имеет значение int, если ваш подкласс использует double? – dexametason
GCC 4.6.1 жаловался: ошибка: конфликтный тип возвращаемого значения указан для «виртуального двойного MyClass :: getValue()» – enobayram
Фактически в моей программе это не int и double. Он двойной и MathVector с 3 компонентами. Базовый класс генерирует скалярный сигнал, а производный класс генерирует трехмерный сигнал. –