今天早上我在一些代码中遇到了这个奇怪的声明(在我的一杯黑咖啡有机会“开始”之前)...
IField const* f(0);
这对我来说有点不寻常。谁能解释变量 f 是什么?
答案 0 :(得分:5)
它是IField const(或const IField)类型的指针'f',它被初始化为0.与例如: const IField * f = 0;
答案 1 :(得分:4)
指向常量IField对象的非常量指针,用NULL值初始化。
答案 2 :(得分:2)
它只是一个普通的对象声明。
从右到左阅读类型:
成本总是与左边结合。
IField const* f(0);
^ Pointer to
^^^^^ const
^^^^^^ IField.
因此,使用值初始化将变量'f'设置为0的变量'f'是'指针'const IField“'的一种类型。
相当于:
IField const* f = 0;
或
IField const* f = NULL;
这基本上意味着'f'是一个指针。它指向IField。它指向的对象不能通过指针修改。但'f'不是常量,所以我们可以将'f'的值更改为指向不同的对象,但最初它是一个NULL指针。
答案 3 :(得分:2)
IField const* f(0);
它使用构造函数式初始化语法,因此等同于:
IField const* f = 0;
因为涉及空指针文字,这类似于:
IField const* f = NULL;
接下来,考虑const
如果有任何东西则适用于左边,否则就是正确的,所以这也是相同的:
const IField* f = NULL;
这是一种你习惯使用的语法吗?
答案 4 :(得分:0)
它与const IField *相同。 (如果在星号后面有“const”,它将是指向const的指针,而不是const指针。)
答案 5 :(得分:0)
它是指向由IField
*引用的const对象的指针。
与
const IField* f(0);