我一直在研究C ++,我开始怀疑你何时声明指针或引用(和常量):
int *a;
int* a;
char &b;
char& b;
const char c;
char const c;
a, b
和c
的两个声明是否相同?他们被允许吗?
Thnx任何帮助! :)
答案 0 :(得分:4)
是的,它们是完全相同的。
一般规则是,如果类型名称旁边有const
,则类型是常量。如果它在指针旁边那么它就是指针是恒定的。如果它在两者旁边那么它会绑定到类型。所以:
char const a; // constant character
char const *b; // non constant pointer to constant data
char * const c; // constant pointer to non constant data
char const * const d; constant pointer to constant data
默认情况下,引用是常量,因为它们在初始化后无法更改为引用任何其他内容。使用上述规则意味着当const
应用于引用时,意味着类型/数据是不变的。
答案 1 :(得分:2)
“是”是您的两个问题的答案。 :d 你老实说得对了!
答案 2 :(得分:1)
是的,嘿是相同的,虽然引用和指针,以及它们的const是不一样的。
就像一个风格问题,我试图保持“&”和变量“*”。许多程序员都习惯在同一行上声明具有相同类型的多个变量的习惯(其他帖子的辩论主题是好还是坏)。
例如:
// Creates three pointers to FruitClass instances.
FruitClass *apple, *lemon, *grapes;
如果你养成了放“&”的习惯或者类型为“*”,您可能会输入:
// Creates a pointer to a FruitClass instance and two FruitClass instances.
// This is probably **not** what you wanted to do.
// And if it is, put these on separate lines because everybody will ask
// if you intended to do this and waste your/their time.
FruitClass* apple, lemon, grapes;
这些非常不同的东西。
这是一个小问题,如果你以第二种方式而不是第一种方式进行,宇宙将不会自毁。只要注意编译器何时开始吠叫(当你尝试将它用作引用/指针时它将会发生咆哮而它不是)。
它也是我合作过的编码标准的一部分。如果您使用标准,请务必遵循它,避免在代码检查期间浪费时间和挫折(因为如果您有标准,某人将正式或非正式地检查代码)。 / p>