class Link
{
private:
string value;
Link* succ;
Link* prev;
public:
Link(string v, Link* s = nullptr, Link* p = nullptr)
: value(v), succ(s), prev(p) { }
Link* insert(Link* p)
{
if(p == nullptr) return this;
p->succ = this;
if(this->prev) this->prev->succ = p->prev;
p->prev = this->prev;
this->prev = p;
return p;
}
};
int main()
{
Link* language = new Link{Link("C++", nullptr, nullptr)};
language = language->insert(new Link("Python", language, nullptr));
return 0;
}
在这本书中,编程原理和实践中有一章是您实现列表的一部分的,而这里是代码。
在上面的代码中,insert()以Link *作为参数,并使用->直接更改其指向的内容(Link * succ,prev)。但是succ和prev都是该类的私有成员,因此我不知道insert()如何直接访问它们。
答案 0 :(得分:0)
在上面的代码中,
insert()
以Link*
作为参数,并使用->
直接更改其指向(Link* succ, prev
)的位置。但是succ
和prev
都是该类的private
成员,所以我不知道insert()
怎么可能直接访问它们。
在类的成员函数中,可以访问该类的private
个成员。由于insert()
是Link
的成员函数,因此您可以访问其中的类private
和prev
的成员succ
。您不仅可以访问隐式对象的prev
和succ
,即this->prev
和this->succ
,还可以访问prev
和{{1} }该类任何实例的成员。
{{3}表(重点是我):
该班级的私人成员只能由该班级的成员和朋友访问,无论该成员位于相同还是不同的实例上: