0
点赞
收藏
分享

微信扫一扫

C++ 第四周

十日十月Freddie 2022-03-22 阅读 67
c++后端

一、带参数的构造函数

构造函数名(类型 1 形参1,类型2 形参2,…)

前面已说明: 用户是不能调用构造函数的,因此无法采用常规的调用函数的方法给出实参。实参是在定义对象时给出的。定义对象的一般格式为

类名 对象名(实参1,实参2,…);

#include <iostream>
using namespace std;

class Box
{public:
Box(int,int,int);    /    
int volume( );            
 private:
int height;
int width;
int length;
};

Box∷Box(int h,int w,int len)
{height=h;
width=w;
length=len;
}


int Box∷volume( )
{return(height*width*length);
}

int main( )
{Box box1(25,20,12);        
cout<<″The volume of box1 is ″<<box1.volume( )<<endl;
Box box2(20,14,10);           
cout<<″The volume of box2 is ″<<box2.volume( )<<endl;
return 0;
}

 二、参数初始化表

Box∷Box(int h,int w,int len):height(h),width(w),length(len){ }

定义时:Box box1;  调用无参构造函数

              Box box2(10,20,30); 调用有参函数

class Box
{public:
Box( );                                    
Box(int h,int w,int len):height(h),width(w),length(len){ }
int volume( );
private:
int height;
int width;
int length;
};

三、构造函数的重载

Box∷Box(int h);

Box∷Box(int h,int w);

在建立对象时分别给定1个参数和2个参数。

说明:

(1) 调用构造函数时不必给出实参的构造函数,称为默认构造函数(default constructor)。显然,无参的构造函数属于默认构造函数。一个类只能有一个默认构造函数。

(2) 如果在建立对象时选用的是无参构造函数,应注意正确书写定义对象的语句。

(3) 尽管在一个类中可以包含多个构造函数,但是对于每一个对象来说,建立对象时只执行其中一个构造函数,并非每个构造函数都被执行。

三、析构函数

static局部对象在函数调用结束时对象并不释放,因此也不调用析构函数,只在main函数结束或调用exit函数结束程序时,才调用static局部对象的析构函数。如果定义了一个全局对象,则在程序的流程离开其作用域时(如main函数结束或调用exit函数) 时,调用该全局对象的析构函数。如果用new运算符动态地建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数。

析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用。程序设计者事先设计好析构函数,以完成所需的功能,只要对象的生命期结束,程序就自动执行析构函数来完成这些工作。

四、对象数组

如果构造函数有3个参数,分别代表学号、年龄、成绩。则可以这样定义对象数组:

Student  Stud[3]={                     //定义对象数组

Student(1001,18,87),               //调用第1个元素的构造函数,          为它提供3个实参

Student(1002,13,76),               //调用第2个元素的构造函数,           为它提供3个实参

Student(1003,18,72)              //调用第3个元素的构造函数,

                                                            为它提供3个实参

};

在建立对象数组时,分别调用构造函数,对每个元素初始化。每一个元素的实参分别用括号包起来,对应构造函数的一组形参,不会混淆。

#include <iostream>
using namespace std;
class Box
{public:
Box(int h=10,int w=12,int len=15): height(h),width(w),length(len){ }
int volume( );
private:
int height;
int width;
int length;
};

int Box∷volume( )
{return(height*width*length);
}

int main( )
{ Box a[3]={                     //定义对象数组
Box(10,12,15),               //调用构造函数Box,提供第1个元素的实参
Box(15,18,20),               //调用构造函数Box,提供第2个元素的实参
Box(16,20,26)                //调用构造函数Box,提供第3个元素的实参
};

五、对象指针

Time *pt;                  //定义pt为指向Time类对象的指针变量

Time t1;                   //定义t1Time类对象

pt=&t1;                    //t1的起始地址赋给pt

这样,pt就是指向Time类对象的指针变量,它指向对象t1。

定义指向类对象的指针变量的一般形式为

类名 *对象指针名;

 

举报

相关推荐

第四周

DVWA(第四周)

第四周作业

Work·第四周

第四周总结

第四周练习总结

第四周学习周记:

第四周总结(一)

0 条评论