C++学习笔记(4):构造函数的初始化列表、new和delete关键字、静态成员变量和静态成员函数、this指针的用法

一、构造函数的初始化列表

//功能:构造函数的初始化列表调用析构顺序
#include <iostream>
using namespace std;

class A
{
   
public:
	A( int a ){
   
		cout << "A(int )...." << a<<endl;
		m_a = a;	
	};

	~A(){
   
		cout << "~A()......" <<endl;
	};

	void printA(){
   
		cout << "a = " << m_a <<endl;	
	}

private:
	int m_a;

};

//构造函数的初始化列表
class B{
   
public:
	B(A &a1, A &a2, int b):m_a1(a1), m_a2(a2)
	{
   
		cout<<"B(A&, A&, int)...."<<endl;
		m_b = b;
	}
	//构造对象成员的构造顺序跟初始化列表的顺序无关
	//而是跟成员对象的定义顺序有关
	B(int a1, int a2, int b): m_a1(a1), m_a2(a2)
	{
   
		cout<<"B(int, int, int)"<<endl;
		m_b = b;
	}

	void printB(){
   
		cout << "b = " << m_b <<endl;
		m_a1.printA();
		m_a2.printA();
	}

	~B(){
   
		cout<<"~B()...."<<endl;
	}

private:
	int m_b;
	A m_a1;
	A m_a2;
};

class ABC
{
   
public:
	//类中的常量需要在构造列表中初始化
	ABC(int a, int b, int c, int m):m_m(m)
	{
   
		cout<<"ABC(int, int, int)" <<endl;
		m_a = a;
		m_b = b;
		m_c = c;
	}
	
	~ABC(){
   
		cout<<"~ABC()..."<<endl;
	}
private:
	int m_a;
	int m_b;
	int m_c;
	const int m_m;//常量
};

class ABCD
{
   
public:
	ABCD(int a, int b, int c, int d ,int m):m_abc(a,b,c,m), m_d(d)
	{
   

	}
	ABCD(ABC &abc, int d):m_abc(abc)
	{
   
		m_d = d;
	}
private:
	int m_d;
	ABC m_abc;
};


void test1(){
   
	A a1(10), a2(20);
	B b(a1, a2, 200);

	b.printB();
}

int main(void){
   
	B b(10,20,300);
	b.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值