什么是构造函数
构造函数就是一种函数,他的特点是在对象实例化的时候会自动调用,一般用于数据初始化
规则:
1、构造函数与类同名
2、构造函数没有返回值(所以写构造函数连void都不用写)
3、构造函数可以有多个重载形式(重载就是参数类型不同,个数不同,顺序不同)
4、实例化对象时仅用到一个构造函数
5、如果没定义构造函数,编译器自动生成一个构造函数
Yase.h
class Yase
{
public:
Yase(int _hp=100);//可以有参数可以没参数
void f1();//1技能
void f2();//2技能
void f3(); //3技能
int getHp();
void setHp(_hp)//这里只举hp的例子
private:
int hp;//生命
int wg;//物攻
int fq;//法强
int wk;//物抗
int fk;//法抗
int mj;//敏捷
};
Yase.cpp
#include "Yase.h"
#include <iostream>
using namespace std;
////////
Yase::Yase(int _hp){
hp = _hp;
}
////////
void Yase::f1(){
cout <<"Yase use 1 skill";
}
void Yase::f2(){
cout <<"Yase use 2 skill";
}
void Yase::f3(){
cout << "Yase use 3 skill";
}
int Yase::getHp(){
return hp;
}
void Yase::setHp(int _hp){
hp = _hp;
}
构造函数的调用
cheng = Yase(200);//此时cheng这个亚瑟角色生命值为200
默认构造函数
我们把实例化对象时不需要传入参数的构造函数叫做默认构造函数默认构造函数
初始化列表:
class Yase
{
public:
/////
Yase():hp(100),wg(60),fq(10),wk(50),fk(50),mj(30){}
////
void f1();//1技能
void f2();//2技能
void f3(); //3技能
int getHp();
void setHp(_hp)//这里只举hp的例子
private:
int hp;//生命
int wg;//物攻
int fq;//法强
int wk;//物抗
int fk;//法抗
int mj;//敏捷
};
初始化列表特性:
1、初始化列表先于构造函数执行
2、初始化列表只能用于构造函数
3、初始化列表可以同时初始化多个数据成员
初始化列表的意义:可以给const修饰的常量初始化赋值
析构函数
析构函数是对象被销毁时调用的函数
定义格式:~类名()
特点:
1、没有自定义析构函数系统会自动生成
2、析构函数在对象销毁时自动调用
3、析构函数没有返回值、没有参数也不能重载
补充:对象的生命历程
申请内存->初始化列表->构造函数->参与运算->析构函数->释放内存