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

上蔡县住房和城乡建设局网站python制作视频网站开发

上蔡县住房和城乡建设局网站,python制作视频网站开发,苏州新闻今天最新消息新闻事件,网页特效【C笔记】C之类与对象(下#xff09; 1、再看构造函数1.1、构造函数的初始化列表1.2、C支持单参数的构造函数的隐式类型转换1.3、匿名对象 2、Static成员2.1、为什么要有静态成员变量#xff1f;2.2、一个类的静态成员变量属于这个类的所有对象2.3、静态成员函数 3、友元3.1、… 【C笔记】C之类与对象(下 1、再看构造函数1.1、构造函数的初始化列表1.2、C支持单参数的构造函数的隐式类型转换1.3、匿名对象 2、Static成员2.1、为什么要有静态成员变量2.2、一个类的静态成员变量属于这个类的所有对象2.3、静态成员函数 3、友元3.1、友元函数3.2、友元类 4、内部类4.1、内部类与外部类是互相独立的4.1、内部类默认是外部类的友元 1、再看构造函数 1.1、构造函数的初始化列表 为什么要引入初始化列表呢 我们之前知道在编译器自动生成的构造函数中对于自定义类型会去调用其默认构造函数但要是这个自定义类型没有可用的默认构造函数就会出问题了例如 这时候先要解决这个问题就要用到初始化列表了因为在初始化列表中就可以对这个b进行定义。 初始化列表的语法如下图所示 也就是初始化列表是在构造函数的大括号之前以冒号开始以逗号分隔每个成员的值用括号定义。 初始化列表是每个成员定义的地方 初始化列表是每个成员定义的地方所以有了初始化列表之后在就如构造函数的函数体之前就会去走初始化列表然后再去走函数体。 我们通过调试就可以看出 事实上不管你写不写每个成员都要走初始化列表这个我们可以通过为成员加上缺省值来验证因为成员的缺省值就是给初始化列表用的 可以看到虽然我们并没有在初始化列表里面写上_month的定义但是当走到_day的定义的时候_month就已经定义成了我们所给的缺省值了。这就说明了_month其实也走了初始化列表。 其实在走完_year时编译器是会自动跳到成员列表处去定义_month的 正是因为不管怎样每个成员都会走初始化列表所以我们以后可以用初始化列表就尽量要用初始化列表。 初始化列表初始化的顺序和声明的顺序相同 这个可以通过一个“反常”现象进行验证 对于这个程序我们一般都会理解成输出两个1但是结果却不是这样。这其实就恰恰说明了初始化列表初始化的顺序是和声明的顺序是一样的因为是a2先声明所以初始化列表会先走a2的定义但a1的只还是随机值。 所以就出现了以上的结果只要我们改一下它们在初始化列表中的顺序这程序就正常了 所以为了避免出现各种问题我们一般都要保证初始化列表初始化的顺序和声明的顺序一样。 而在吧编译器自动生成的构造函数中其实是在初始化列表中对内置类型不作处理(假如没有给缺省参数)对于自定义类型则去调用其默认构造函数 1.2、C支持单参数的构造函数的隐式类型转换 C之所以支持这个语法主要还是能个好的应付自定义类型的一些场景还是拿我们的栈来举例子对于下面这个类我们在定义对象的时候其实有两种写法 这里的本质其实就是隐式类型转换编译器会先用2去调用A的构造函数去生成一个临时对象再用这个对象去拷贝构造a2。 但是编译器觉得先构造在拷贝构造太麻烦了于是编译器就再次进行了优化将拷贝构造省去用2直接构造a2。 从下面的结果中我们也可以看到编译器只调用了构造函数 1.3、匿名对象 在C语言中我们见过匿名结构体在C中也有一个匿名对象即我们在定义对象的时候可以不给名字 匿名对象的生命周期只在一行我们可以通过加上析构函数来验证这一点 我们会发现程序在运行下一行指令的时候就会先去调用析构函数。 其实C支持这个语法还是为了代码简便例如我们现在有一个函数的参数是一个自定义类型如果不支持匿名对象我们每次都要先定义一个有名对象再去传 但是有了匿名对象之后我们就可以直接传一个匿名对象了 2、Static成员 2.1、为什么要有静态成员变量 有时候我们可能会有这样的需求统计一个类总共定义了对少个对象。 我们很容易会想到定义一个全局变量然后再在构造函数和拷贝构造中让这个全局变量自加1 但这个做法的缺点就在于全局变量的作用域太大了很容易就会被修改只要被外人一修改这统计的就不对了。 所以为了解决这个问题C引入了静态成员变量 2.2、一个类的静态成员变量属于这个类的所有对象 首先要说明的是静态成员变量并不在类里面这一点可以通过计算类的大小来验证 可以看到A的大小为4也就是说只计算了成员_a的大小并没有计算N的大小。 实际上静态成员变量是存在于静态区的。 静态成员变量不能给缺省值静态成员变量需要在类外边定义 因为静态成员变量属于所有类所以如果它是共有的他就可以直接使用类作用限定符来访问而其他成员变量就不可以 2.3、静态成员函数 熟了静态成员变量C还有一个静态成员函数 静态成员函数没有this指针所以静态成员函数不能访问非静态成员 但是它可以自由的访问静态成员变量 而且如上图所示静态成员变量并没有this指针所以在调用的时候也就不需要先有对象直接是用来访问限定符突破类域即可。 3、友元 虽然在类里边我们可以随便访问成员变量而不受访问限定符的限制但有些函数我们会发现将它写成成员函数会很奇怪例如对日期我们需要使用运算符重载重载一个流插入运算符 我们这好像写的没问题但当我们去调用的时候却会发现问题了 这里提示说未接收到参数这是因为我们的顺序反了我们知道非静态成员函数都会有一个隐藏的this指针并且永远在第一位 所以我们如果要调用就需要这样 这样就简直太奇怪了而且使用起来也是真不习惯。 所以为了解决这个问题我们就需要引入友元了。 3.1、友元函数 上面的这个问题主要是参数的顺序不对所以我们可以考虑将其写成全局的这样就可以随意安排参数的顺序了 但是当我们在调用的时候却还是会出现问题 因为这些成员都是私有的我们不能够直接访问。 其实我们可以用一个简单的方法来解决就是对应每一个成员都写一个共有的函数来返回对应成员的值 但当成员有很多个的时候这种方法也不是很简便所以我们就可以用到友元声明 因为这里的友元函数仅仅只是个声明所以写在任何地方都是可以的。 这样这个函数就可以直接访问这些成员了 3.2、友元类 有时候我们需要在一个类里边定义另一个类的对象 但是烦心的是我们并不能直接访问其成员因为是私有的 这时候我们就可以将Date类声明成A类的“友元类”没错友元不仅可以声明友元函数还可以声明友元类 这样在Date类中就可以随意的访问A类中的成员了 这其实和友元函数的作用是相同的。 但有一点需要注意“友元”并不是相互的就像这里只有Date类是A的友元类但A并不是Date类的友元类也就是说在A类中不可以直接访问Date类中的成员 4、内部类 这就像结构体可以嵌套定义一样类也可以嵌套定义 4.1、内部类与外部类是互相独立的 “内部类”虽然名称叫做内部类但事实上它本身却并不包含在外部类里这一点我们可以通过计算类的大小来验证 很明显这里A类的大小仅为4如果要包含内部类的话至少也的是8才对。 但内部类受外部类的访问限定符的限制比如内部类若是公有的我们就可以直接通过A的类作用限定符来定义对象 如若是私有就不能了 4.1、内部类默认是外部类的友元 内部类的优势就是内部类默认是外部类的友元类也就是说内部类可以直接访问到外部类的成员 但上面也说过了友元并不是相互的所以外部类并不能直接访问内部类的成员
http://www.hkea.cn/news/14593947/

相关文章:

  • php 网站配置网站怎样关键词排名优化
  • 洪宇建设集团公司网站弹性盒子做微网站
  • 中小型网站建设与网络搭建亚马逊网站建设进度计划书
  • 在线营销型网站制作免费网站建设ydwzjs
  • 知名网站排行榜莱芜
  • 百度站长电脑版搭建电商网站
  • 无投入网站推广网站建设百度云资源
  • 长沙网站seo优化青岛物流公司网站建设
  • 如何简单制作自己的网站网站如何做vip等级
  • 嘉兴做外贸网站的公司手机网站设计与实现是什么
  • 凯里建设网站oppo软件商店下载安装
  • 建设部精神文明建设网站大连网站制作方法
  • 任县网站建设设计天河建设网站
  • 做网站分pc端和移动端的吗石碣仿做网站
  • 推广网站推广网站媒体作风建设年工作总结
  • 网站中备案与不备案的区别烟台网站建设推广
  • 台州市城市建设投资公司网站浙江省建设监理协会官方网站
  • 安徽省住房城乡建设厅网站wordpress旧版本哪个好些
  • 网站 内容 不收录 权重 1网站网站怎么建设
  • 广告网站建设案例网络营销设计公司
  • 湖南省造价管理站官网品牌设计流程
  • 建网站公建网站公司天体摄影
  • 北京市企业网站建设免费资源部落wordpress
  • 做国际网站学习网页制作的网站
  • 衣柜推拉门图案设计网站如何维护自己的网站
  • 途牛旅行网网站建设社区子网站群建设
  • 肇庆网站制作系统天津建设工程信息
  • 地产flash网站菏泽做公司简介网站
  • 梧州自助建站seo做网站怎么不被找到
  • 一个网站一年多少钱wordpress live-calendar