QT开发之C++基础-下半部分
一. 类函数的重载特性
指可以在类里面定义同名的函数,但是参数不同的函数。
class Student
{
public:
char name[64];
int age;
void test();
void test(int a);
}
Void Student::test(){
B=100;
Cout<<b<<endl;
}
Void Student::test(int a){
Cout<<a<<endl;
}
Int main(){
Student my;
My.test();
My.test(50);
}
结果:100;
50;
重载函数在调用的时候会根据参数的类型,会根据参数的类型去匹配相应的函数进行调用。
二. 构造函数和析构函数
- 析构函数:假如定义了析构函数,当对象被删除或者生命周期结束时,就会触发析构函数。
- 构造函数:假如定义了构造函数,当对象被创建时,就会触发构造函数。
- 两者的定义:
两者的名字必须和类名一致。
析构函数要在前面加一个~。
例子:
class Student
{
public:
char name[64];
int age;
Student();//构造
Student(int a);//构造函数的重载
~Student();//析构
}
Student::Student(){
Cout<<”hello1”<<endl;
}
Student::Student(int a){
Cout<<b<<endl;
}
Student::~Student(){
Cout<<”hello2”<<endl;
}
Int main(){
Stundent my;//对象被创建,触发构造
Student *my1 = new Student(10);//对象被创建,触发重载的构造函数,带参的需要用这个方法创建对象
Delete my;//对象被删除,触发析构。
Return 0;
}
结果:hello1;
10;
hello2;
4. 构造函数可以被重载,析构函数不能被重载。
三. 类的继承
类的继承允许在新的类里继承父类的public和protected的部分,而private不可被继承。当父类不满足我们的需求,我们可以用新的类继承父类,在新的类里面假如新的部分。
例子:class 儿子:public 爸爸{
Public:
……
Protected:
……
}
Class MyStudent:public student{
Public:
Int grade;
}
通过.和->访问父类的内容。
MyStudent my2;
my2.grade=99;
my2.age=15;
四. 虚函数和纯虚函数
虚函数:有实际定义,允许派生类对其进行覆盖式的替换。Virtual修饰。用在类的继承
纯虚函数:没有实际定义的虚函数,就是纯虚函数。
例子:
class Student
{
public:
char name[64];
int age;
virtual void test();
virtual void testa(){}//无代码,为纯虚函数
}
Student::test(){
Cout<<”aaaa”<<endl;//有代码,为虚函数
}
Class MyStudent:public Student{
Public:
Void test(){
Cout<<”bbbbb”<<endl;//派生类的test覆盖父类的test
}
}
Int main(){
MyStudent my2;
My2.test();
Return 0;
}
结果:bbbbb
虚函数的优点:使用虚函数,可以预留接口,实现分工合作。