C++语法学习细节之,初始化列表与内部类和static修饰的成员与函数

初始化列表的位置:在构造函数中,既可以是构造也可以是拷贝构造。作用:是定义成员变量的地方。

格式如图所示。(:+ 成员名字+(参数))这里就是对B类型成员定义的地方。而B 下。只是整体定义了这个自定义变量。

静态成员变量与之不用不会在初始化列表,静态成员变量属于类的所有对象

所以他可以通过类域访问(如果是共有成员的话)

其次 如何定义与生命呢?在类中定义,在全局声明,声明的时候不需要加staic关键字 

在计算类的大小的时候静态变量也是不会被算进去的。

我们这还看到爆了一个错误,无法在b类访问a的成员,怎么办呢?只要在A类任意位置加上friend + 函数的声明就可以了。

加上之后就没有报错了

这样这个函数就被称为友元函数,他是单向的,只是在b 类里这个函数可以访问a类的成员,但是在a类中不能访问b类的成员。怎么可以不使用友元也可以继续访问a中的成员呢?

对!使用 内部类 

这样A类天生就是b的友元,与直接使用友元不同的是,如果类是私有的那么外部无法定义a类。 

 构造函数的隐士类型转化:如果一个类是当个成员变量类那么他就支持隐士类型转化

 

编译器会生成一个临时变量去拿1去构造一个x类型的变量再拷贝构造给m;编译器优化以后不会这样做他会大胆的拿1去直接构造m;这里针对第一种情况给出explict他的意思是明确的,加在构造函数前面禁止这样的隐式类型转化 。但是我们刚刚为什么会报错呢?因为隐式类型转化必须要自己提供构造函数且这个构造函数必须有形参。

 

可以看到编译器完成了类型转化。

 

 

阻止了隐式类型转化编译器报错。

最后一个匿名类变量。 

可以作为函数的实参减少拷贝构造。 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值