C++学习第十七天(类与对象):初始化列表,对象成员

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

初始化列表的主要作用是给类中的成员属性进行一个初始化的一个操作,联系前一天学习的构造函数也是给成员属性做一个初始化的操作,那么初始化列表是我们的另一个方法。

一、语法(构造函数与初始化列表的对比)

常用方法:构造函数赋值

1、固定赋值

person(int age,int height)
	{
		m_age = age;
		m_height = new int(height);//2、用new在堆区为传入参数开辟内存,返回地址用m_height接收,堆区开辟的空间由程序员自己释放
	    cout << "调用有参构造函数" << endl;
	}
	person() :m_age(10), m_height(new int(160))
	{

	}

2、灵活赋值

person(int a,int b) :m_age(a), m_height(new int(b))
	{

	}

二、类对象作为类的成员

1.赋值+调用顺序

代码如下(示例):

#include<iostream>
using namespace std;
#include<string>
class phone
{
public:
	string phone_name;
	phone(string name)
	{
		phone_name = name;//利用构造函数给成员属性赋值
		cout << "调用phone类构造函数" << endl;
	}
	~phone()
	{
		cout << "phone类析构函数的调用" << endl;
	}

};
class person
{
public:
	string m_name;
	phone m_phone;//其它类对象作为该类的成员,叫做对象成员
	person(string pname, string hname) :m_name(pname), m_phone(hname)//利用成员初始列表给成员属性赋值
	{
		cout << "调用person类构造函数" << endl;
	}
	~person()
	{
		cout << "person类析构函数的调用" << endl;
	}
	
};
void test01()
{
	person p1("张三", "max-phone");//其中值传递phone m_phone="max-phone",相当于隐式调用
	cout << p1.m_name << "拿着" << p1.m_phone.phone_name << endl;
}
int main()
{
	test01();
}
 

 构造函数调用:先调用作为对象成员的类,析构函数的调用顺序原则:先进后出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值