Мне было интересно, был ли простой способ написать псевдоним функции класса С++. Например, если у меня есть контейнер list
, логическая функция будет
int list::length() { return len; }
Но другой логический псевдоним, который могут использовать программисты, может быть
int list::size() { return len; }
Итак, вместо того, чтобы писать обе функции с их полным телом, есть ли способ сделать list::size()
псевдоним list::length()
таким, что он не является дубликатом при компиляции, а скорее ссылается на ту же функцию?
Я читал, что вы можете сделать это с помощью #define
, но я не хочу приводить к путанице с другими кодовыми именами где-то полностью вне видимости (т.е. переменной размера).
Я также прочитал, что указатели на функции могут его исправить, но это не совсем псевдоним (поскольку он должен применять де-ссылку), а также не может указывать указатели на указатели, что дает ему путаную линию помощи пользователям ( Я бы подумал), плюс путаница, если мне когда-либо понадобится вставить мой код внутри другого объекта (мне нужно настроить область).
Один из моих догадок заключается в следующем: если большинство оптимизирующих компиляторов будут считаться прямым псевдонимом функции:
inline int list::length() { return len; }
inline int list::size() { return length(); }
Или существует ли какой-либо строгий синтаксис псевдонимов для С++? (Я не мог найти ни одного - не был уверен)
Итак, каков был бы самый эффективный способ сделать это?
РЕДАКТИРОВАТЬ: Я принял ответ просто, чтобы закончить вопрос, поскольку это только мое любопытство. Любой, у кого есть хорошая информация, добавьте комментарии или ответ,, и я даже могу изменить свой ответ.