在这里宣布什么?

时间:2011-08-17 06:34:56

标签: c++ const

今天早上我在一些代码中遇到了这个奇怪的声明(在我的一杯黑咖啡有机会“开始”之前)...

IField const* f(0);

这对我来说有点不寻常。谁能解释变量 f 是什么?

6 个答案:

答案 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);