当前位置: 首页 > news >正文

长春站建了多少年阳江兼职招聘网最新招聘

长春站建了多少年,阳江兼职招聘网最新招聘,电子软件开发工资多少钱,兰州优化公司哪个好上次重新再次补全了构造函数的内容#xff0c;以及static成员#xff1a;C类与对象#xff08;四#xff09;#xff1a;再谈构造函数#xff08;详解初始化列表#xff09;、Static成员 今天就来进行类与对象最后一部分的内容 文章目录 1.友元1.1友元函数1.2友元类 2.内…上次重新再次补全了构造函数的内容以及static成员C类与对象四再谈构造函数详解初始化列表、Static成员 今天就来进行类与对象最后一部分的内容 文章目录 1.友元1.1友元函数1.2友元类 2.内部类3.临时对象4.匿名对象 1.友元 友元提供了一种突破封装的方式有时提供了便利。但是友元会增加耦合度破坏了封装所以能不用就不用。 友元包括友元函数和友元类 1.1友元函数 友元函数可以直接访问类的私有成员它是定义在类外部的普通函数不属于任何类但需要在类的内部声明声明时需要在前面加friend关键字 之前我们在重载 和时已经使用过了一开始发现重载成成员函数不行。 因为cout的输出流对象和隐含的this指针在抢占第一个参数的位置。如果重载为成员函数this指针默认是第一个参数也就是左操作数了 但是实际使用中cout需要是第一个形参对象才能正常使用。所以要将operator重载成全局函数。但又会导致类外没办法访问成员此时就需要友元来解决。operator同理 class Date { public:Date(int year1, int month 1, int day 1):_year(year),_month(month),_day(day){ }friend ostream operator(ostream out,const Date d);friend istream operator(istream in,Date d);private:int _year;int _month;int _day; }; ostream operator(ostream out, const Date d) {out d._year / d._month / d._day endl;return out; }istream operator(istream in, Date d) {in d._year d._month d._day;return in; }说明 友元函数可访问类的私有和保护成员但不是类的成员函数友元函数不能用const修饰友元函数可以在类定义的任何地方声明不受类访问限定符限制一个函数可以是多个类的友元函数友元函数的调用与普通函数的调用原理相同 1.2友元类 友元类的所有成员函数都可以是另一个类的友元函数都可以访问另一个类中的非公有成员。 友元关系是单向的不具有交换性。 比如下面Time类和Date类在Time类中声明Date类为其友元类那么可以在Date类中直接访问Time类的私有成员变量但想在Time类中访问Date类中私有的成员变量则不行。 友元关系不能传递。如果C是B的友元 B是A的友元则不能说明C时A的友元。 友元关系不能继承在继承位置再给大家详细介绍。 class Time { public:Time(int hour 0,int minute0):_hour(hour),_minute(minute){ }friend class Date;//声明日期类为时间类的友元类则在日期类中就直接访问Time类//中的私有成员变量 private:int _hour;int _minute; };class Date { public:Date(int year1, int month 1, int day 1):_year(year),_month(month),_day(day){ }void SetTime(int hour 0, int minute 0){// 直接访问时间类私有的成员变量_t._hour hour;_t._minute minute;} private:int _year;int _month;int _day;Time _t; };2.内部类 如果一个类定义在另一个类的内部这个内部类就叫做内部类。内部类是一个独立的类它不属于外部类更不能通过外部类的对象去访问内部类的成员。 外部类对内部类没有任何优越的访问权限内部类的构造函数不能直接初始化外部类的对象。如果需要在内部类中使用外部类的对象应该使用指针或者引用。 class A { public:A(int a 0):_a(a){ }class B//B这个内部类是A的友元{public:void print(A _ra)//通过引用或者指针{cout _b endl;cout _ra._a endl;//访问外部类的私有变量}private:int _b;}; private:int _a; };其实B就是一个普通类只是受A的类域和访问限定符限制,本质相当于被封装了一下 特性 内部类可以定义在外部类的public、protected、private都是可以的。注意内部类可以直接访问外部类中的static成员不需要外部类的对象/类名。sizeof(外部类)外部类和内部类没有任何关系 3.临时对象 临时对象是指在表达式中创建的、没有被显式命名的对象。它们通常用于在表达式中进行一些计算或操作然后被立即销毁。临时对象的生命周期通常只存在于当前表达式的执行过程中。 临时对象的使用场景包括 作为函数的实参传递给函数。作为函数的返回值返回给调用者。用于执行一些临时的计算或操作 class Point { public:Point(int x, int y) : _x(x), _y(y) {cout Constructor called endl;}Point(const Point other) : _x(other._x), _y(other._y) {cout Copy constructor called endl;}~Point() {cout Destructor called endl;}void Print() {cout Point( _x , _y ) endl;} private:int _x;int _y; };Point CreatePoint() {return Point(3, 4); // 创建临时对象并返回 }int main() {Point p1 CreatePoint(); // 临时对象作为返回值赋值给p1后就开始销毁了p1.Print();return 0; }结果 Constructor called Copy constructor called Destructor called Point(3, 4) Destructor called4.匿名对象 匿名对象是在创建时未命名的临时对象。它们没有被显式地分配给任何变量只在创建时使用通常用于简单操作、函数调用或者作为表达式的一部分 class A { public:A()//无参构造{count;}A(A a)//拷贝构造{count;}static int getCount()//静态成员函数没有this指针{return count;} private:static int count;//类内声明属于整体公有 }; int A::count 0;//类外定义int main() {A aa; //A aa;有名对象cout aa.getCount()-1 endl;A();// 这种写法叫做匿名对象生命周期只在这一行。方便调用函数用的cout A().getCount() - 1 endl;return 0; }c初阶类与对象的基本内容就已经梳理好了感谢大家的支持
http://www.w-s-a.com/news/562934/

相关文章:

  • 用源码建设网站关于网站开发的自我评价
  • 网站设计师图片自助建站编辑器
  • 网站建设的常用技术有哪些深圳建筑工地招工
  • 做软装找图片的网站wordpress 替代
  • 制作网站的后台公众号做视频网站会封吗
  • 广西企业建站邯郸景区网站制作
  • 开发商城网站多少钱城厢区建设局网站
  • 网站外链多的危害天水市建设局网站
  • 网站接入商学交互设计网站
  • 目前最新的网站后台架构技术综述什么网站可以做名片
  • 成都建站长沙做网站美工的公司
  • 湖南省住房与城乡建设厅网站平顶山网站关键词优化
  • 购物网站前台功能模块汕头网站设计电话
  • 网站你懂我意思正能量免费wordpress菜单底部导航代码
  • 一个主机可以建设多少个网站山东高端网站建设
  • 长沙网站建设搭建网络营销做得好的公司
  • 如何做网站的后台管理石家庄seo关键词排名
  • 给自己公司做个网站山东做外贸网站的公司
  • 张家港网站建设培训江苏省建设工程网站系统
  • html个人网站桂林建站
  • 湛江网站优化快速排名wordpress文章页面宽度
  • 自己建网站怎么弄唯品会一家专门做特卖的网站
  • 做文化传播公司网站做搜狗pc网站点
  • 免费的黄冈网站有哪些平台可以聊天呢要查询一个网站在什么公司做的推广怎么查
  • 凡客建站登录入口网站建设先进部门评选标准
  • 响应式设计 手机网站政务中心建设网站
  • 如何做卖衣服的网站网站登录接口怎么做
  • 网站源码下载了属于侵权吗499全包网站建设
  • 怎样创建网站信息平台网络推广官网首页
  • 网站建设的课程网站 逻辑结构