1.类函数的重载特性
类函数的重载特性就是说我们可以在类里卖弄定义同名的函数,但是参数不同的函数。
重载函数在调用是会根据参数类型,然后去匹配相应的函数进行调用。
#include <iostream>
using namespace std;
class student
{
public:
char name[64];
int age;
void test();
void test(int a);
private:
int haha;
};
int main()
{
cout << "Hello World!" << endl;
return 0;
}
2.构造函数和析构函数
析构函数:假如定义了析构函数,当对象被删除或者生命周期结束的时候,就会触发析构函数。
构造函数:假如定义了构造函数,当对象被创建时候,就会触发构造函数。
我们要怎么定义析构函数和构造函数?
1.构造函数和析构函数的类名必须一模一样
2.析构函数要在前面加上一个~
举例:见student2
#include <iostream>
using namespace std;
class student
{
public:
student();//构造函数,constructor
~student();//析构函数,destructor
char name[64];
int age;
void test();
void test(int a);
private:
int haha;
};
student::student(){
cout << "Hello constructor" << endl;
}
student::~student(){
cout << "bye destructor" << endl;
} //在return0的时候变量被删除触发析构函数
void student::test(){
haha=100;
cout<<haha<<endl;
};
void student::test(int a){
//haha=100;
cout<< a <<endl;
};
int main()
{
student my;
student *my1 = new student;
my.age=18;
my.test(50);
my1->age=19;
delete my1; //堆内删除用delete
cout << "Hello World!" << endl;
return 0;
}
构造函数是可以被重载的,析构函数是不能被重载的。重载:就是()里面带上参数。
能不能被重载,最主要的原因是,是否可以有参数(析构函数不能有参数,所以不可以被重载)
3.类的继承
什么是类的继承?
类的继承允许我们在新的类里面继承父类的public还有protected部分,private是不能被继承的。
当我们觉得这个类不好的时候就可以使用类的继承,添加我们需要的功能。
格式:
class 儿子:public 爸爸{
public:
······
protected:
}
class my_student:public student
{
public:
int grade;
};
如何在子类里面访问父类的成员?
也是通过 . 和->访问的
4.虚函数和纯虚函数
虚函数:有实际定义的,允许派生类对他进行覆盖式(可以用子类中的同名函数替换父类中的同名函数)的替换,virtual来修饰。
纯虚函数:没有实际定义的虚函数就是纯虚函数。
virtual void testa();//虚函数
virtual void testb(){};//纯虚函数
怎么定义一个虚函数?
用Virtual来修饰,虚函数是用在类的继承上的。
虚函数的优点?
留出接口,分工合作