请把主函数体里的语句详细解释一下 谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:33:43
//A *a = new B();创建一个B类的对象,创建了一个A类型的指针指向tand类的对象,是不是这个意思?
a=0;是什么意思?
a=new C();是什么意思?
为什么在这个程序里的类结构体中析构函数写在构造函数的上面?
#include <iostream>

class A
{
public:
virtual ~A() {std::cout << "~A()" << std::endl;}
A() {std::cout << "A()" << std::endl;}
virtual void foo() { std::cout << "A::foo() is called" << std::endl;}
};

class B: public A
{
public:
~B() {std::cout << "~B()" << std::endl;}
B() {std::cout << "B()" << std::endl;}
void foo() { std::cout << "B::foo() is called" << std::endl;}
};

class C: public A
{
public:
~C() {std::cout << "~C()" << std::endl;}
C() {std::cout << "C()" << std::endl;}
};

int main()
{
A *a

A *a = new B();这一句动态创建一个B类型的对象,然后把它的指针用一个A类型的指针来接收。
a = new C();这一句动态创建一个B类型的对象,然后把它的指针用一个A类型的指针来接收。
因为A类是 B、C类的基类,所以可以用A类型的指针来指向B、C类型的对象。

类里函数的顺序是可以任意的,都一样,所以析构函数写在构造函数前不是错的。