小工具知识网

当前位置: 首页 > 行业知识 > 【C++】类与对象——友元,内部类,匿名对象

行业知识

【C++】类与对象——友元,内部类,匿名对象

2026-11-08 04:13:26 来源:互联网转载

类与对象

  • 1 友元
    • 1.1 概念:
    • 1.2 友元函数
    • 1.3 友元类
    • 2 内部类
      • 概念:
      • 特性:
      • 举例:
      • 3 匿名对象
      • Thanks♪(・ω・)ノ谢谢阅读!!!
      • 下一���文章见!!!

        1 友元

        1.1 概念:

        友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不易多用

        友元分为:友元函数 和 友元类。

        友元关键字 :friend 可以理解为我把他看做朋友,所以他可以使用我的东西。这就是友元做到的事情是类似的,通过设置友元,在一个类中可以访问类外的函数与变量。

        1.2 友元函数

        我们现在来实现日期类Date的流输出public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; } //这里 参数有两个 (Date* this , ostream& out ) //左右操作数不一致。 ostream& operator out Date a1(2024,2,24); cout public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}friend ostream& operatorout Date a1(2024, 2, 24);cout // 声明日期类为时间类的友元类,//则在日期类中就直接访问Time类中的私有成员变量friend class Date;public:Time(int hour = 0, int minute = 0, int second = 0): _hour(hour), _minute(minute), _second(second){}private:int _hour;int _minute;int _second;};public:Date(int year = 1900, int month = 1, int day = 1): _year(year), _month(month), _day(day){}void SetTimeOfDate(int hour, int minute, int second){// 直接访问时间类私有的成员变量_t._hour = hour;_t._minute = minute;_t._second = second;}定义内部类class Time{friend class Date; // 声明日期类为时间类的友元类,则在日期类中就直接访问Time类中的私有成员变量public:Time(int hour = 0, int minute = 0, int second = 0): _hour(hour), _minute(minute), _second(second){}void show(Date& d){printf("时间是 %d年%d月%d日%d时%d分%d秒", d._year, d._month, d._day, _hour,_minute,_second);}private:int _hour;int _minute;int _second;};private:int _year;int _month;int _day;Time _t;};int main() {Date d1(2024, 2, 26);Date::Time t1(11, 26, 30);t1.show(d1);}public:A(int a = 0):_a(a){cout cout public:int Sum_Solution(int n) {//...return n;}};int main(){A aa1;// 不能这么定义对象,因为编译器无法识别下面是一个函数声明,还是对象定义//A aa1();// 但是我们可以这么定义匿名对象,匿名对象的特点不用取名字,// 但是他的生命周期只有这一行,我们可以看到下一行他就会自动调用析构函数A();A aa2(2);// 匿名对象在这样场景下就很好用,当然还有一些其他使用场景,这个我们以后遇到了再说Solution().Sum_Solution(10);return 0;}

上一篇:教程安卓手机打包电话功能,一键拨打轻松实现!

下一篇:Windows11系统 安装Composer详细教程 Composer是PHP 的一个依赖管理工具