目录
类的构造函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。
普通构造函数
#include <iostream>
using namespace std ;
class Line
{
public :
void SetLenth(int len);
int GetLenth(void);
Line(); // 这是构造函数
private:
int Lenth ;
};
Line::Line(void)
{
cout << "类的对象被建立" << endl ;
}
int Line::GetLenth(void)
{
return Lenth ;
}
void Line::SetLenth(int len)
{
Lenth = len ;
}
void main()
{
Line line ;
line.SetLenth(2);
cout << "Lenth is " <<line.GetLenth()<< endl;
}
/* 输出结果
类的对象被建立
Lenth is 2
*/
带参数的构造函数
默认的构造函数没有任何参数,但如果需要,构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值
#include <iostream>
using namespace std ;
class Line
{
public :
void SetLenth(int len);
int GetLenth(void);
Line(int len); // 这是构造函数
private:
int Lenth ;
};
Line::Line(int len)
{
Lenth = len ;
}
int Line::GetLenth(void)
{
return Lenth ;
}
void Line::SetLenth(int len)
{
Lenth = len ;
}
void main()
{
Line line(5) ;
cout << "Lenth is " <<line.GetLenth()<< endl;
}
/* 输出结果是
Lenth is 5
*/
初始化列表来初始化字段
还可以使用初始化列表来初始化字段。假设有一个类 C,具有多个字段 X、Y、Z 等需要进行初始化,只需要在不同的字段使用逗号进行分隔。
#include <iostream>
using namespace std ;
class Line
{
public :
void SetLenth(int len);
int GetLenth1(void);
int GetLenth2(void);
int GetLenth3(void);
Line(int len1 , int len2 ,int len3);
private:
int Lenth1 ;
int Lenth2 ;
int Lenth3 ;
};
// 使用初始化列表来初始化字段
Line::Line(int len1 , int len2 ,int len3): Lenth1(len1) ,Lenth2(len2) , Lenth3(len3)
{
cout << "Object is being created " << endl ;
}
int Line::GetLenth1(void)
{
return Lenth1 ;
}
int Line::GetLenth2(void)
{
return Lenth2 ;
}
int Line::GetLenth3(void)
{
return Lenth3 ;
}
void main()
{
Line line(2,3,6) ;
cout << "Lenth1 is " <<line.GetLenth1()<< endl;
cout << "Lenth2 is " <<line.GetLenth2()<< endl;
cout << "Lenth3 is " <<line.GetLenth3()<< endl;
}
/* 输出结果是
Object is being created
Lenth1 is 2
Lenth2 is 3
Lenth3 is 6
*/
类的析构函数
类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。
#include <iostream>
using namespace std ;
class Line
{
public :
void SetLenth(int len);
int GetLenth1(void);
int GetLenth2(void);
int GetLenth3(void);
Line(int len1 , int len2 ,int len3); // 构造函数
~Line(); // 析构函数
private:
int Lenth1 ;
int Lenth2 ;
int Lenth3 ;
};
// 使用初始化列表来初始化字段
Line::Line(int len1 , int len2 ,int len3): Lenth1(len1) ,Lenth2(len2) , Lenth3(len3)
{
cout << "Object is being created " << endl ;
}
Line::~Line()
{
cout << "Object is being deleted" << endl;
}
int Line::GetLenth1(void)
{
return Lenth1 ;
}
int Line::GetLenth2(void)
{
return Lenth2 ;
}
int Line::GetLenth3(void)
{
return Lenth3 ;
}
void main()
{
Line line(2,3,6) ;
cout << "Lenth1 is " <<line.GetLenth1()<< endl;
cout << "Lenth2 is " <<line.GetLenth2()<< endl;
cout << "Lenth3 is " <<line.GetLenth3()<< endl;
}
/* 输出结果是
Object is being created
Lenth1 is 2
Lenth2 is 3
Lenth3 is 6
Object is being deleted
*/
部分资料来源于菜鸟教程