测试用例
#include <iostream>
using namespace std;//运算符的重载
class Person//人
{
public:
int a;
Person()
{
cout << "父类的不带参的构造函数调用" << endl;
}
Person(int a)
{
cout << "父类的带参数的构造函数调用" << endl;
}
~Person()
{
cout << "父类的析造函数调用" << endl;
}
void go()//父类
{
cout << "父类的go()" << endl;
}
void go(int a)//父类
{
this->a = a;
cout << "父类的有参数的go()" << endl;
}
};
//父类 = 基类 子类 = 派生类
class Student :public Person//学生,公有的继承
{
public:
Student() :Person(10)//构造函数,继承父类
{
cout << "子类的构造函数调用" << endl;
}
~Student()
{
cout << "子类的析造函数调用" << endl;
}
void go()//重写这个go(),继承父类
{
cout << "子类的无参数的go()" << endl;
}
void go(int a)//重写这个go(),继承父类
{
cout << "子类的带参的go()" << endl;
}
};
用两个对象,person父类,studen子类
父类 = new 子类
不调用delete函数
void main()
{
Person* p = new Student();
return;
}
结果:
父类的带参数的构造函数调用
子类的构造函数调用
调用delete函数,触发父类的析构函数
void main()
{
Person* p = new Student();
delete p;
return;
}
结果:
父类的带参数的构造函数调用
子类的构造函数调用
父类的析造函数调用
如果:
p->go();
是触发调用父类的子函数
子类 = new 子类
void main()
{
Student* p = new Student();
return;
}
父类的带参数的构造函数调用
子类的构造函数调用
调用delete函数
void main()
{
Student* p = new Student();
delete p;
return;
}
父类的带参数的构造函数调用
子类的构造函数调用
子类的析造函数调用
父类的析造函数调用
如果:
p->go();
是触发调用子类的子函数