做淘宝要网站,佛山网站建设企业,网站建设与维护 国赛,网站做接口到app价格构造函数和析构函数
构造函数是一个与类同名的特殊的公有成员函数。
创建类对象时构造函数会被调用#xff0c;且只调用一次/
构造函数无返回类型。 默认构造函数格式#xff1a; 类名#xff08;#xff09;{.......}
Account(){ //无返回类型#xff0c;无参数I…构造函数和析构函数
构造函数是一个与类同名的特殊的公有成员函数。
创建类对象时构造函数会被调用且只调用一次/
构造函数无返回类型。
· 默认构造函数格式 类名{.......}
Account(){ //无返回类型无参数ID 0; //缺省IDstrcpy(Name,); //缺省账户名balance 0.0; //缺省余额
}
· 带参数的构造函数。其格式如下 类名形式参数表{.......}
Account(int ID,char Name[],float balance){this-ID ID;strcpy(this-Name,Name);this-balance balance;
}
//这个构造函数的内容和 Qt图形界面编程入门3 中Inital函数完全相同
· 拷贝构造函数
类名类名 c
这里第一个类名是函数名第二个类名是说明引用变量c的类型
Account(Account other){ID other.ID; //为什么可访问other的私有成员strcpy(Name,other.Name);balance other.balance;
}
//拷贝构造函数就是创建一个现有对象的副本
//C规定在类的成员函数中不仅仅可利用“对象.变量名”的形式访问自身所有的数据成员也可以访问同一个类的其他对象的所有数据成员
在Account的拷贝构造函数中使用引用类型是因为如果使用普通的类对象做参数那么该函数调用时会反复不停的创建参数表里的局部对象引发死循环。
函数重载与构造函数
函数重载是C的专有概念。
在传统C语言中要定义在两个整数三个整数两个实数或者若干整数中求最大值的函数可定义如下
int Max2(int, int);// 返回两个整数中最大值
int Max3(int, int ,int); //返回三个整数中最大值
//返回两数中最大值
double MaxD2(double, double);
//返回数组A前n个元素的最大值
int MaxArray(int A[],int n);
在C中则可以定义为
int Max(int,int); //返回两个整数中最大值
int Max(int, int, int); //返回三个整数中最大值
//返回两个实数中的最大值
double Max(double,double);
//返回数组A前n个元素的最大值
int Max(int A[],int n);函数重载是指相同的作用域中的函数名称相同而参数不同的多个函数并存的现象。
于是在账户类中可能程序下面三个构造函数
Account();
Account(int ID,char Name[], float balance);
Account(Account other);
如何调用构造函数
int main(){char name[20] Jack;// ..........Account a1; //构造函数a1.Initial(10112,name,600.0);Account a2(a1); //调用拷贝构造函数Account a3 //调用默认构造函数
}
构造函数只在对象创建时调用且仅仅调用一次
此后再不能通过“对象.函数名参数”的形式调用
对象数组如何调用构造函数
Account C[3];
C[0] Account(10101,name,500.0);
C[1] Account(10102,name,1600.0);
C[2] Account(10103,name,900.0);
//也可以写成下面形式
Account C[3]
{
Account(10101,name,500.0),
Account(10102,name,1600.0),
Account(10103,name,900.0)
};
动态对象如何调用构造函数
Account *pA
//动态创建1个对象调用默认构造函数
pA new Account;Account *pA,*pB;
//调用带参的构造函数
pA new Account(10001,name,500.0);
//调用拷贝构造函数
pB new Account(*pA);
析构函数的定义和作用
· 析构函数函数名与类名相同紧贴再名称前面用波浪号~与构造函数进行区分例如
~Point
· 构造函数没有返回类型也不能指定参数因为析构函数只能有一个不能被重载
· 当对象被撤销时析构函数被自动调用与构造函数不同的是析构函数可以被显式调用以释放对象中动态申请的内存。
构造函数的初始化列表
初始化列表是构造函数特有的初始化变量的方式被访者构造函数形式参数表最后的后边函数体起始位置的{前面
类的静态成员
用关键字static修饰的数据成员叫做静态数据成员
class MyClass{int x;static int count; //static 放在某种类型之前
};
MyClass MemberX,MemberY;
MyClass::m_nCount 0;静态成员函数只能直接访问类中的静态成员变量
所有非静态成员函数均可直接访问静态和非静态的数据成员
静态成员为类的所有对象所共享