2010-10-24 3 views
2

В производном классе у меня есть функция, называемая оценкой() (она является виртуальной в базовом классе). В этом производном классе я также имею функцию set_value(), и, следовательно, я хочу get_value(). get_value() должен возвращать то же самое, что и оценка()Две функции, выполняющие то же самое, псевдоним?

Можно ли сказать, что вызов get_value является вызовом для оценки()? С каким-то псевдонимом?

Я не знаю, существует ли это или что он будет называться, я искал и ничего не нашел.

Может быть, я Шоуда сделать:

inline double Variable::get_value() const 
{ 
    return evaluate(); 
} 
+3

Использовать встроенные и оптимизационные функции, и я не гарантирую снижения производительности. –

+0

Как включить оптимизацию? Я использую командную строку g ++ (Windows atm) – Moberg

+1

Используйте флаг командной строки '-O' (или' -O2', '-O3', подробности см. В руководстве GCC). –

ответ

3

Нет, нет псевдонимов в C++ вы ищете. Конечно, именно так:

double Variable::get_value() const 
{ 
    return evaluate(); 
} 

С другой стороны, вы могли бы сделать get_value() функцию в суперкласс и пусть он сделает то же самое, если это ваше требование конструкции.


Другое преимущество реализации get_value() этот путь с голыми руками, чтобы предоставить возможность привлечь дополнительную логику. Если ваш evaluate() получит все больше времени процессора, вы можете реализовать простое кэширование на месте.

+1

Нет никакого преимущества в использовании ключевого слова inline, но с его помощью сложность компоновщика добавляется, поэтому лучший совет не следует использовать, если это не требуется. –

+0

@LokiAstari Не могли бы вы рассказать об этом? Насколько я знаю, класс 'inline' хранения указывает, как в« подсказках », что функция должна быть встроена, но компилятор может игнорировать это. Как это делает связь более сложной? – HonkyTonk

+0

@HonkyTonk: функция 'inline' обычно находится в файле заголовка. Если он не является фактически встроенным (потому что это только подсказка), то каждая единица компиляции (объектный файл), которая включает файл заголовка, будет иметь копию функции. Во время фазы связи, когда компоновщик преобразует все единицы компиляции в исполняемый файл, компоновщик должен знать, что может быть несколько версий одной и той же функции. Как это связано с этим, выходит за рамки языка, но я подозреваю, что это усложняет ситуацию. –

Смежные вопросы