C++函数调用机制初级

1.  To create an object composed of objects.

2.  To use this pointer.

主要分析函数调用机制

 

.h文件:


#include<iostream>
using namespace std;

class X{
public:
	X(){
		cout<<"这是X的默认构造函数\n";
	}

	X(X& t){
	
		cout<<"这是X的复制构造函数\n";
	}

	X& operator=(X& s){
		
		cout<<"这是X的赋值构造函数\n";
		return *this;
	}

	~X(){
		cout<<"这是X的析构函数\n";
	}

};

class A{
public:
	A(X x)
	{
		cout<<"这是A的构造函数\n";
		c=x
	}
	~A(){
		cout<<"这是A的析构函数\n";
	}
private:
	X c;
};


.cpp文件:

 

#include"XYAB.h"

int main()
{
	X g;
	A j(g);	
}

输出:

1)  实例g的创建

2)  值传,x(g),即复制构造函数的调用

3)  当属性有对象类型X时,在构造A之前要先构造X(A的小弟,即A要“爱幼”)

4)  执行A构造函数的函数体的开始标志

5)  运算符重载函数的调用

 

.h文件(运算符重载函数返回类型去掉引用):

#include<iostream>
using namespace std;

class X{
public:
	X(){
		cout<<"这是X的默认构造函数\n";
	}

	X(X& t){
	
		cout<<"这是X的复制构造函数\n";
	}

	X operator=(X& s){
		
		cout<<"这是X的赋值构造函数\n";
		return *this;
	}

	~X(){
		cout<<"这是X的析构函数\n";
	}

};

class A{
public:
	A(X x)
	{
		cout<<"这是A的构造函数\n";
		c=x
	}
	~A(){
		cout<<"这是A的析构函数\n";
	}
private:
	X c;
};


输出:

6)  结果返回时会出现X temp(*this)(临时变量调用赋值构造函数)的情况。

 

.h文件(尽量多使用&):

#include<iostream>
using namespace std;

class X{
public:
	X(){
		cout<<"这是X的默认构造函数\n";
	}

	X(X& t){
	
		cout<<"这是X的复制构造函数\n";
	}

	X& operator=(X& s){
		
		cout<<"这是X的赋值构造函数\n";
		return *this;
	}

	~X(){
		cout<<"这是X的析构函数\n";
	}

};

class A{
public:
	A(X& x)
	{
		cout<<"这是A的构造函数\n";
		c=x
	}
	~A(){
		cout<<"这是A的析构函数\n";
	}
private:
	X c;
};

输出:


.h文件(初始化列表):

#include<iostream>
using namespace std;

class X{
public:
	X(){
		cout<<"这是X的默认构造函数\n";
	}

	X(X& t){
	
		cout<<"这是X的复制构造函数\n";
	}

	X& operator=(X& s){
		
		cout<<"这是X的赋值构造函数\n";
		return *this;
	}

	~X(){
		cout<<"这是X的析构函数\n";
	}

};

class A{
public:
	A(X x):c(x)
	{
		cout<<"这是A的构造函数\n";
	}
	~A(){
		cout<<"这是A的析构函数\n";
	}
private:
	X c;
};

输出:


对比分析:

1

使用初始化列表的优越性跃然文档上

 

2

尚未总结出来两者之间的优越性哪个好


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值