一.构造函数的特点
1.构造函数的名字必须和类名相同
2.构造函数可以有指定的返回类型,但不能指定返回值类型,可以不带参数
3.函数体可以在类里也可以在类
4.构造函数可以重载,即一个类可以定义多个不同个数或参数类型不同的构造函数
5.构造函数被声明为公有函数,但它不能被显示的调用(类外),他是系统自动调用
二.例子
构造函数:类名 对象名 (实参表)
1.初始化
(1)Complex A(3.0,4.0)
#include<iostream>
using namespace std;
#include<cmath>
class Complex{
public:
Complex()//不带参数
{real=0;imag=0;}
Complex(double r,double i)//带参数,定义一个局部变量接受main函数传过来的值,传递给数据成员
{real=r;imag=i;}
double abscomplex()
{
double t;
t=real*real+imag*imag;
return sqrt(t)
}
private:
double real;
double imag;
};
int main()
{
Complex A1,A2(3.0,4.0);//第一个没参,第二个有参
cout<<A1.abscomplex()<<" "<<A2.abscomplex()<<endl;
return 0;
}
(2)
类名::构造函数([]参数表])[:(成员初始化表)]初始化表--数据成员1(初始值1),数据成员2(初始值2)
{
构造函数体
}
class Date{
public:
Date(int y,int m,int d);//申明
private:
int year;
int month;
int day;
};
Date::Date(int y,int m,int d):year(y),month(m),day(d){}
不可以在构造函数中对变量进行赋值
带默认参数的构造函数
Date(int y,int m=0,int d=2);
三.析构函数
是一种特殊的成员函数,执行与构造函数相反的操作,用于撤销对象时的一些清理任务.
1.与构造函数名字相同,但前面加个~
2.一个类中只能有一个析构函数,没参数,没返回值,不能重载
3.当撤销对象时,编译系统会自动地调用析构函数