注意:在main之前声明的类,它的作用域是全局的。
析构函数的作用:不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新的对象使用。
析构函数不返回任何值、没有函数类型、没有函数参数。
一个类可以有多个构造函数,但只有一个析构函数。析构函数的调用顺序与构造函数相反。
虚函数 virtual void show(){}多态性的体现。
纯虚函数: virtual void show()=0;
抽象类:凡是包含纯虚函数的类都是抽象类,抽象类不能初始化对象。
析构函数的作用:不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新的对象使用。
析构函数不返回任何值、没有函数类型、没有函数参数。
一个类可以有多个构造函数,但只有一个析构函数。析构函数的调用顺序与构造函数相反。
多态性和虚函数:把基类的析构函数设置为virtual,这样才会调用子类的析构函数,不会造成内存泄露。
#include<iostream>
using namespace std;
class A
{
public :
A()
{
cout<<"A() constractor..."<<endl;
}
virtual ~A()//如果没有virtual 只会调用~A(),不会调用~B()。
{
cout<<"~A() disconstractor..."<<endl;
}
private:
};
class B :public A //当默认缺省时,默认为private类型。
{
public :
B()
{
cout<<"B() constractor..."<<endl;
}
~B()
{
cout<<"~B() disconstractor..."<<endl;
}
private:
};
void main()
{
A *p=new B();//多态性的体现,父类的指针,指向子类的对象。
delete p;
}
虚函数 virtual void show(){}多态性的体现。
纯虚函数: virtual void show()=0;
抽象类:凡是包含纯虚函数的类都是抽象类,抽象类不能初始化对象。