1.类函数的重载特性
类函数的重载特性就是说我们可以在类里面定义同名的函数,但是参数不同的函数
class student
{
public:
char name[64];
int age;
void test();
void test(int a); //这里就是利用的重载特性
private:
int haha;
};
重载含糊在调用的时候,会根据参数的类型,然后去匹配相应的函数进行调用
2.构造函数和析构函数
析构函数:假如我们定义了析构函数,那么当对象被删除或者声明周期结束的时候,就会出发触发析构函数
构造函数:假如我们定义了构造函数,就会出发这个构造函数
定义析构函数:
1.构造函数和析构函数的名字必须和类名一模一样。
2.析构函数要在前面加上一个 “~” ,构造函数不需要
class student
{
public:
student(); //构造函数
~student(); //析构函数
char name[64];
int age;
void test();
void test(int a);
private:
int haha;
};
student::student() //构造函数
{
cout << "Hello" << endl;
}
student::~student() //析构函数
{
cout << "Hello xigou" << endl;
}
构造函数是可以被重载的,但是析构函数是不能被重载的
当构造函数重载的时候,传参数就可以匹配调用哪个构造函数,但是只能以一下方法声明对象
class student
{
public:
student(); //构造函数
student(int a); //构造函数
~student(); //析构函数
char name[64];
int age;
void test();
void test(int a);
private:
int haha;
};
int main(){
student *my1 = new student(520);
}
3.类的继承
类的继承允许我们在新的类里面继承父类的public还有protected部分,private是不能被继承的
当我们觉得这个类的不好的时候,可以使用类的继承,添加我们需要的功能
class 儿子:public 爸爸(
public:
.....
Protected
)
class student
{
public:
student(); //构造函数
student(int a); //构造函数
~student(); //析构函数
char name[64];
int age;
void test();
void test(int a);
private:
int haha;
};
class my_student:public student
{
public:
int gradel;
};
在子类里面访问父类的成员,也是通过 . 和 ->去访问,但是只能访问公有的,私有的是不能被继承的;
4.虚函数和纯虚函数
虚函数:有实际定义的,允许派生类对他进行覆盖式的替换,virtual来修饰
纯虚函数:没有实际定义的虚函数就是纯虚函数
定义一个虚函数,用virtual来修饰
虚函数是用在类的继承上的。
virtual void testa(); //虚函数
virtual void testa1(){}; ///纯虚函数
class student
{
public:
student(); //构造函数
student(int a); //构造函数
~student(); //析构函数
char name[64];
int age;
void test();
void test(int a);
virtual void testa();
virtual void testa1(){};
private:
int haha;
};
class my_student:public student
{
public:
int grade;
void testa()
{
cout << "2000" << endl; //这里替换掉了父类里面的函数
}
};
虚函数优点:
可以预留接口,实现分工合作