📄 constructor_destructor_1.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 + -