gpt4 book ai didi

C++ friend 类可以访问其基类的所有成员吗?

转载 作者:搜寻专家 更新时间:2023-10-31 02:21:51 25 4
gpt4 key购买 nike

我的理解是友元类可以访问基类的所有成员(包括数据成员)。但是,使用此代码:

class Animal {                                                                                                                                                                                            
string _name;
Animal(){};
Animal(const string & n, const string & t, const string & w);
friend class Duck;
};

Animal::Animal(const string & n) : _name(n) {
}


class Duck: public Animal {
public:
Duck(const string n) : Animal(n){};
};


int main(int argc, char *argv[])
{
Duck donald("Donny");
printf("The donlad ran %s\n", donald._name.c_str());
return 0;
}

我收到error: '_name' is a private member of 'Animal'

为什么 friend 类 Duck 不能访问基类 Animal 的所有成员?

最佳答案

错误是在 main 中调用 printf("The donlad ran %s\n", donald._name.c_str()); 的地方

您不能通过类实例(在本例中为 donald)访问 _name,因为 _nameprivate。由于 friend 指定,_name 可从 Duck 类中访问,但在 main/中不可访问p>

关于C++ friend 类可以访问其基类的所有成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30960826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com