C++类和对象(4)

初始化列表:对象的成员变量定义的地方

 注意点

1. 类里面的缺省值是给初始化列表的,用于定义

2. 初始化列表内自定义类型: 是去调用他的构造函数,自定义类型变量有默认构造函数,带缺省值,也可以不用默认构造函数,很灵活,不规定一定调哪个,只要调了构造函数就可以

3. 没有默认构造函数的自定义类型成员变量: 自定义类型变量 没有 默认构造函数 的时候,对象定义时(Date d1;),没有值可以给改变量定义,并且不知道怎么传值给改变量的构造函数,所以放在初始化列表里面定义比较好。其他的必须在定义的时候初始化的类型也适合初始化列表

4. 重点所有变量成员都要走一遍初始化列表定义, 但对同一个变量我们最多显式写一次

5. 局限性:不能对要拿 来做定义的值 进行别的处理后在赋值(检查,初始化malloc出来的空间 等等)

6. 初始化列表定义的顺序不按照初始化列表里的顺序,而是声明的顺序定义

类型提升

1. 定义: 整型提升 有个临时变量,存提升后的值,再赋值给更大类型的变量,具有常性

但是 特别的 Date d = 2;类型提升 但现在的编译器会 优化成构造拷贝,但原本是用 2 构造函数初始化 新变量 , 再拿新变量 赋值 给创造出的 第二个新变量 。 

2. const A& aa  = 2;可以 因为临时对象具有常性,这里是临时对象构造函数,再用引用。

静态成员变量和函数

1.  静态成员变量不属于某一个对象,类的每一个对象共享,初始化列表是对对象的专属成员变量定义,静态变量无法在此定义。         不可以给缺省值,缺省值是给初始化列表的。

2. 必须在 全局位置 定义 静态成员变量定义时可以突破私有的限制(必须要有定义)

3. 静态成员函数没有this指针,给定了类域就可以访问静态变量,但因为无 this ,无法访问其他成员变量。

静态静态成员函数里面不可以调用非静态成员变量,因为没有this ,只能访问类的公共资源。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值