欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

C++ 友缘关系

发布时间:2024/2/28 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++ 友缘关系 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

要求

人物

基类:class Lovers

  • 子类:Boyfriend,Girlfriend

第三者:class Others

  • 子类:(无)

故事是这样的

基类Lovers的name属性访问级别为protected,但将Others类设为友缘关系。
第三者Others类到自己拥有kiss方法,希望调用。此kiss方法传参为Boyfriend类型的的对象。

代码

#include<iostream> #include<string> //基类 class Lovers { public:Lovers(std::string lovers_name);//构造器 protected:std::string name;friend class Others; }; //子类 class Boyfriend :public Lovers { public:Boyfriend(std::string name); }; class Girlfriend :public Lovers { public:Girlfriend(std::string name); }; //第三者 class Others { public:std::string name;Others(std::string name);//构造器void dosomething(Boyfriend duixiangname); }; //基类构造器 Lovers::Lovers(std::string lovers_name) {this->name = lovers_name; } //子类构造器 Boyfriend::Boyfriend(std::string name) :Lovers(name) {this->name = name; } Girlfriend::Girlfriend(std::string name) : Lovers(name) {this->name = name; } //第三者构造器 Others::Others(std::string name) {this->name = name; } //子类方法(访问基类的private部分) void Others::dosomething(Boyfriend duixiangname)//传入的是一个class对象 {std::cout << "I am kissing " << duixiangname.name << std::endl; } int main() {Boyfriend person1("Tony");Girlfriend person2("Alice");Others person3("Uncle");person3.dosomething(person1);system("pause"); }

运行结果

第三者Others成功运用自己的kiss方法访问到了Lovers类的name成员

输出:

I am kissing Tony
请按任意键继续. . .

版本2

将29,51行的参数类型Boyfriend改成了Lovers,这样在60行的调用不受限制

#include<iostream> #include<string> //基类 class Lovers { public:Lovers(std::string lovers_name);//构造器 protected:std::string name;friend class Others; }; //子类 class Boyfriend :public Lovers { public:Boyfriend(std::string name); }; class Girlfriend :public Lovers { public:Girlfriend(std::string name); }; //第三者 class Others { public:std::string name;Others(std::string name);//构造器void dosomething(Lovers duixiangname); }; //基类构造器 Lovers::Lovers(std::string lovers_name) {this->name = lovers_name; } //子类构造器 Boyfriend::Boyfriend(std::string name) :Lovers(name) {this->name = name; } Girlfriend::Girlfriend(std::string name) : Lovers(name) {this->name = name; } //第三者构造器 Others::Others(std::string name) {this->name = name; } //子类方法(访问基类的private部分) void Others::dosomething(Lovers duixiangname)//传入的是一个class对象 {std::cout << "I am kissing " << duixiangname.name << std::endl; } int main() {Boyfriend person1("Tony");Girlfriend person2("Alice");Others person3("Uncle");person3.dosomething(person2);system("pause"); }

输出:

I am kissing Alice
请按任意键继续. . .

总结

以上是生活随笔为你收集整理的C++ 友缘关系的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。