介绍" auto"
的同义词我想在C ++中使用"Almost always auto"样式,但是以更具描述性的形式,反映初始化的语义。
要做到这一点,我想介绍汽车的4种不同用途的同义词
从示例中可以理解一般的想法:
#define Val const auto // initialize (immutable) value
#define MVal auto // initialize mutable value
#define Ref const auto& // initialize (immutable) reference
#define MRef auto&& // initialize mutable reference
Val num = 2 + 2;
MVal count = 0;
++count;
Ref widget = GetWidget();
MRef gadget = GetGadget();
gadget.ChangeState();
出现了几个问题:
Q1 :可以在没有宏的情况下引入同义词吗?
Q2 :如果宏是不可避免的,我如何减轻使用它们的危害(假设同义词应该非常短)?
Q3 (主要基于意见):从可读性/风格的角度来看,它是否是一个好主意(与裸AAA风格相比)?
Q4 (疯狂):在typedef中是否存在禁止自动的基本原因(可实现性,与其他功能的不良交互)? (假设" typedef auto"可用问题可以解决这个问题)
答案 0 :(得分:3)
Q1。是的同义词可以这种方式介绍。 Q2。使用ALLUPPERCASE遵循约定。 Q3。但通常这不是一个好主意,我会发现const auto
比VAL
Q4更具可读性。我认为它不受支持,因为typedef是一个已定义的类型,const auto
不是。
答案 1 :(得分:3)
Q1。没有。 Q2。通过尽可能少地使用它们。 Q3。非常糟糕。 C ++程序员习惯于给定的语法。 Q4。我不知道你想要什么,或者为什么。