假设我有一个有两个内联函数的类:
class Class {
public:
void numberFunc();
int getNumber() { return number; }
private:
int number;
};
inline void Class::numberFunc()
{
number = 1937;
}
我实例化该类,并调用该类中的两个函数:
int main() {
Class cls;
cls.numberFunc();
cout << cls.getNumber() << endl;
return 0;
}
我知道这两个内联函数仍然是该类的成员,但我也理解内联函数体内的代码只是插入到它被调用的位置。由于该插入,我似乎无法直接访问成员变量number
,因为据我所知,main()
编译器中的代码如下所示:
main() {
Class cls;
cls.number = 1937;
cout << cls.number << endl;
return 0;
}
有人可以向我解释为什么我仍然能够访问这些私有成员,或者纠正我对内联函数的理解吗?我知道编译器可以选择忽略inline
某些函数;这就是这里发生的事情吗?
输出:
1937年