构造函数和析构函数和复制构造函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五

【实验内容】

构造函数和析构函数和复制构造函数

构造函数

1. 构造函数是类的一个特殊成员函数,它的函数名与类名相同。

2. 构造函数定义了对象数据成员的初始化方法,它只在创建对象时

被系统自动调用,并且只在创建对象时调用一次,是为创建的对象分配内存空间和对数据成员进行初始化。

3. 构造函数无函数类型,没有返回值,一般都声明为公有函数。4.C++规定,每个类必须有构造函数,没有构造函数就不能创建对象。

5.如果程序中未声明构造函数,则系统自动产生出一个默认形式的构造函数,如果提供了一个构造函数,系统就不能自动提供一个默认的构造函数。

6.构造函数可以重载,即可以定义多个参数及参数类型不同的构造函数。

复制构造函数

又称拷贝构造函数,是一种特殊的构造函数,其形参为本类的对象引用。功能是把初始值对象的每个数据成员的值都复制到新建立的对象。

如果程序员没有为类声明拷贝初始化构造函数,则编译器自己生成一个拷贝构造函数。

1. 当用类的一个对象去初始化该类的另一个对象时系统自动调用它

实现拷贝赋值。

2. 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自

动调用拷贝构造函数。

3. 当函数的返回值是类对象时,系统自动调用拷贝构造函数。

析构函数

析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类的生命周期结束的时候,由系统自动调用。

析构函数和构造函数的最主要的区别:调用期不同、构造函数可以有参数可以重载。

实验1

设计一个学生类stu,其中含有数据成员name、english和math,分别表示学生的姓名、英语成绩与数学成绩,使用类的成员函数output 和total输出学生的基本信息和总成绩,并完成在main函数中的相应调用。

#include

using namespace std;

class stu

{

public:

stu(char n[]="",double e=0.0,double m=0.0);

~stu();

void input();

void output();

void total();

private:

char name[8];

double english,math;

};

stu::stu(char n[],double e,double m)

{

strcpy(name,n);

english=e;

math=m;

}

stu::~stu()

{

}

void stu::input()

{

cout<<"请输入学生的姓名、英语成绩与数学成绩:"<

cin>>name>>english>>math;

}

void stu::output ()

{

cout<<"学生的姓名、英语成绩与数学成绩:"<

}

void stu::total ()

{

cout<<"学生的总成绩是:"<

}

void main()

{

stu s1("张思宁",95,80),s2;

s2.input ();

s1.output ();

s1.total ();

s2.output() ;

s2.total ();

}

实验2

练习书上112页例4-2,熟悉复制构造函数被调用的3种情况。

相关文档
最新文档