C++ 为什么这个成员函数可以访问私有向量

C++ 为什么这个成员函数可以访问私有向量,c++,member,C++,Member,现在我有一个代码片段,我正试图理解它。我认为只有友元函数才能访问私有成员变量,那么为什么方法'grad'能够访问'a'来获取其大小呢 #include <vector> using namespace std; class Polynom{ private: vector<double> a; public: Polynom(const vector<double>& v): a(v) {} int grad()

现在我有一个代码片段,我正试图理解它。我认为只有友元函数才能访问私有成员变量,那么为什么方法'grad'能够访问'a'来获取其大小呢

#include <vector>

using namespace std;

class Polynom{
  private:
    vector<double> a;

  public:
    Polynom(const vector<double>& v): a(v) {}

    int grad() { return a.size()-1; }
};

int main()
  {
    return 0;
  }
#包括
使用名称空间std;
类多项式{
私人:
载体a;
公众:
多项式(常数向量&v):a(v){}
int grad(){返回a.size()-1;}
};
int main()
{
返回0;
}

问问自己,如果私有成员访问取消了类中其他成员的访问权限,那么私有字段有什么意义?你声明了一个潜在的复杂对象,然后就真的对它无能为力了?您有一个可以与自身交互的私有区域,但它不能对任何面向公众的功能产生任何影响?您使用私有结构作为中间人写入您随后使用的公共字段?这些情景都没有那么有意义。访问修饰符保护类不受外部影响,但OOP模型假定程序员将在类内自行处理。
值得注意的是,有一种情况下不能访问私有成员:继承。基类私有变量位于派生类中,但不能直接引用。明确地说,这些是基类的私有变量。子类有自己的私有作用域,可以在其中声明并正常访问。

grad函数属于Polynom类。类的成员函数可以访问同一类的私有变量。类的所有成员都可以访问该类的所有其他成员。实际上,
private
主要用于此用例:限制对其他成员函数的访问<代码>朋友< /C>只是一个将它扩展到非成员函数的构造。你应该更仔细地阅读C++的书,这是一个非常基本的概念。你的班级没有C++教科书吗?那太可怕了。