假设我有一个带有两个内联函数的类:
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;
}
有人可以向我解释为什么我仍然能够访问那些私有(private)成员,或者纠正我对内联函数的理解吗?我知道编译器可以选择忽略 inline
在某些功能上;这就是这里发生的事情吗?
输出:
1937
最佳答案
访问类的私有(private)成员的规则由编译器在您的 C++ 代码上强制执行。这些规则并不直接适用于编译器的输出,即计算机执行的代码。
关于c++ - 为什么允许内联函数操作私有(private)成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12557661/