欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++中类的名字查找

程序员文章站 2022-07-15 12:50:39
...

1 类的成员函数定义代码的名字查找

C++中编译类代码时,首先编译类的所有声明,只有再编译类的成员函数的定义代码。也就是说,在类的成员函数的代码中,可以使用在其后声明的变量。

class MyClass{
  int getValue() {
    return i;
  }
  int i;
};

在以上代码中,类MyClass的成员函数getValue()虽然定义在成员变量i之前,但是也可以使用该变量。

2 类的成员函数声明代码的名字查找

在编译成员函数声明的代码时,名字查找是从声明代码处向上查找,即此时如果该函数的定义中使用了在其后定义的变量或类型,程序会报错。

class MyClass{
  MYINT getValue();
  typedef int MYINT;
  int i;
};

此时,成员函数getValue()的返回值是MYINT,但是MYINT在其后才定义,此时程序会报错,报错信息为error C3646: “getValue”: 未知重写说明符。应将成员函数getValue()的声明放在MYINT定义之后。