今、私はインライン関数について学んでいますが、本当に混乱する何かに遭遇しました
このクラスを見る
class Nebla{
private:
int x;
public:
inline void set(int y){x=y;}
inline void print(){cout<<x<<endl;}
};
プライベート データ メンバーがあります。int x;
また、次の 2 つのパブリック インライン関数がset(int y)
あります。print()
これら 2 つの関数はインラインであるため、呼び出されると、コンパイラは関数呼び出しを関数の内容に置き換えます。
だから私はこれを行う場合
Nebla n;
n.set(1);
n.print();
2 つの関数はインラインであるため、次のようになります。
Nebla n;
n.x=1;
cout<<n.x<<endl;
でもちょっと待って、x
プライベートです。したがって、これは機能しません。
しかし、通常はクラス外からプライベートメンバーにアクセスできないのに、なぜ機能するのか混乱していますか?
クラスの外部からプライベートデータメンバーにアクセスできる理由を説明できますが、メンバー関数がインラインの場合、インラインは関数呼び出しを関数の内容に置き換えるだけですが、アクセスできますか?