C++中的构造函数-初始化

构造函数

初始化:两种形式,“:”或者在函数体里初始化。
  • 看第二种方法:函数体里初始化

class 张三
{
public:
	A(int& 小名)
	{
		饭量 = 1;
		智商 = 2;
		小名 = 250;
	}
protected:
	int 饭量;
	const int 智商;
	int& 小名;
 
};

/*
你需要知道的知识:

  1. int&为引用变量,需要在定义的时候初始化.
  2. const为恒量限定符,需要在定义的时候初始化,且const创建之后不允许再次赋值
    本代码由于上述原因而编译错误,由此,引入冒号初始化方式
    */
知识点:
  • 函数体:构造函数为变量分配内存 -> 读到“{ }”里初始化语句 -> 为变量填充初始值
  • 冒号:构造函数为变量分配内存 -> 同时为其填充初始值 -> 然后开始执行“{}”里的内容。
  • 看第一种方法:冒号初始化
class 张三
{
public:
	A(int& 小名):智商(2),小名(250)
	{
		饭量 = 1;
		
	}
protected:
	int 饭量;
	const int 智商;
	int& 小名;
 
};

编译成功
你一定发现了这行代码变了:A(int& 小名):智商(2),小名(250)
在进入构造方法同时,开辟内存空间给“智商”“小名”,同时初始化好变量,即可正常编译。

  • 借用博主zj510实验成果图片:
    链接:https://blog.csdn.net/zj510/article/details/8135556

在这里插入图片描述看得出,_a对应本文"饭量";_b对应智商;_c对应小名,清晰看到,进入A构造函数后,“智商”变为2,"小名"变成250,且"饭量"已经被定义,但仍未未初始化,这一切都说明冒号能够在进入函数括号之前就发挥作用。。

总结:C++声明一个类A,类A的构造函数在创建好对象A a;之后构造其数据成员整个过程要求:1. 给出此数据成员分配的内存地址空间,2. 按其声明的顺序开始初始化成员3. 初始化数据成员
  • 希望我总结的思路能帮你理解冒号在构造函数中的作用。感谢天道酬勤,也愿你我财富自由。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值