⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 constructor_destructor_1.cpp

📁 对于一个初涉VC++的人来书
💻 CPP
字号:

//***********************************************
// 无名对象: 初始化引用,初始化对象,作为函数参数
//***********************************************

# include <iostream>
# include <string>

using namespace std;

class Student
{
public:
	Student(string nam,int n)
	{
		cout<<"Constructor"<<endl;
		name=nam;
		number=n;
	}
	Student(Student & E)
	{
		cout<<"Constructor Copy"<<endl;
		name=E.name;
		number=E.number;
	}
	~Student()
	{
		cout<<"Destructor"<<endl;
	}
	void Display()
	{
		cout<<name<<" : "<<number<<endl;
	}
private:
	string name;
	int number;
};

void function1(Student E)
{
	E.Display();
	cout<<"End of function"<<endl;
}

void function2(Student) //无名对象
{
	cout<<"End of function"<<endl;
}

void function3(Student & E)
{
	E.Display();
	cout<<"End of function"<<endl;
}

void function4(Student &) //对象无名引用
{
	cout<<"End of function"<<endl;
}

//分别执行以下6种情况,比较执行结构的不同:
int main()
{
	//首先调用构造函数,创建一个无名对象;
	//而后调用拷贝构造函数,拷贝构造初始化对象引用ref_e;
	//拷贝完成后,无名对象析构消失.
	//主函数执行完成时,对象引用ref_e析构消失.
	//Constructor
	//Constructor Copy
	//Destructor
	//Jenny : 100
	//End of main()
	//Destructor
//	Student & ref_e=Student("Jenny",100); //无名对象赋值给引用
//	ref_e.Display();
//	cout<<"End of main()"<<endl;

	//首先调用构造函数,创建一个无名对象;
	//而后调用拷贝构造函数,拷贝构造对象e;
	//拷贝完成后,无名对象析构消失.
	//主函数执行完成时,对象e析构消失.
	//Constructor
	//Constructor Copy
	//Destructor
	//Jenny : 100
	//End of main()
	//Destructor
//	Student e=Student("Jenny",100); //无名对象赋值给对象
//	e.Display();
//	cout<<"End of main()"<<endl;

	//首先调用构造函数,创建一个无名对象;
	//而后调用拷贝构造函数,拷贝构造实参传递给形参(传值);
	//执行调用函数体内的语句;
	//退出调用函数时,形参和无名对象先后析构消失.
	//主函数执行完成.
	//Constructor
	//Constructor Copy
	//Jenny : 100
	//End of function
	//Destructor
	//Destructor
	//End of main()
//	function1(Student("Jenny",100)); //无名对象实参赋值给有名对象形参
//	cout<<"End of main()"<<endl;

	//Constructor
	//Constructor Copy
	//End of function
	//Destructor
	//Destructor
	//End of main()
//	function2(Student("Jenny",100)); //无名对象实参赋值给无名对象形参
//	cout<<"End of main()"<<endl;

	//首先调用构造函数,创建一个无名对象;
	//而后实参传递给形参(引用);
	//执行调用函数体内的语句;
	//退出调用函数时,形参析构消失.
	//主函数执行完成.
	//Constructor
	//Jenny : 100
	//End of function
	//Destructor
	//End of main()
//	function3(Student("Jenny",100)); //无名对象实参赋值给对象引用形参
//	cout<<"End of main()"<<endl;

	//Constructor
	//End of function
	//Destructor
	//End of main()
//	function4(Student("Jenny",100)); //无名对象实参赋值给对象无名引用形参
//	cout<<"End of main()"<<endl;

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -