注册 登录
编程论坛 C++教室

请各位帮我解释下这个题目

ku_klox 发布于 2010-07-27 13:19, 787 次点击
#include<iostream>   
using namespace std;   
  
class A   
{   
public:   
    A()  {cout << "A" << endl;}   
    ~A() {cout << "~A" << endl;}   
    void fn() {cout << "A fn()" << endl;}   
};   
  
class B : public A        //那个:public A是什么?是拷贝构造函数吗?
{   
public:   
    B()  {cout << "B" << endl;}   
    ~B() {cout << "~B" << endl;}   
    void fn() {cout << "B fn()" << endl;}   
};   
  
  
int main()   
{   
    A *pa = new B;     //这个是什么意思
    pa->fn();          //这个也不懂
    delete pa;   
    return 0;   
}



请帮我解释一下这个题目的意思,为什么答案是

A
B
A fn<>
~A




[ 本帖最后由 ku_klox 于 2010-7-27 13:20 编辑 ]
7 回复
#2
a73625432010-07-27 14:21
class B : public A  
是说B继承A的函数.
#3
gq1987182010-07-27 14:46
公有继承的意思吧
#4
wuanping2010-07-27 16:17
(当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:
获得一块内存空间,调用构造函数、返回正确的指针。)

只找到这句话。楼下的详细说明下~
#5
b8705162010-07-27 17:14
class B : public A        //那个:public A是什么?是拷贝构造函数吗?
说明B类是从A类中派生出来的。
 A *pa = new B;     //这个是什么意思
是B类开辟一块空间,用A类的指针PA指向这个空间。
pa->fn();          //这个也不懂
这个我也不懂,可能是PA指向FN()函数?
先执行A类(基类)的构造函数
再执行B类(派生类)的构造函数
再执行B类的析构函数
#6
zgxyz20082010-07-28 10:48
int main()   
{   
    A *pa = new B;     //这个是什么意思
    // 我觉得可以这样理解:B *b=new B;   A *pa=b;
    //说明:子类在调用构造函数时,先调用父类的构造函数,再调用子类的,如果有很多父类的话按照继承顺序,依次调用。所以先调用A类,即先输出A,再输出B;
    pa->fn();          //这个也不懂
   //这样应该很容易了吧,声明的是A对象,所以调用A的成员函数.
    delete pa;   
    return 0;   
}
#7
ku_klox2010-07-28 14:24
回复 6楼 zgxyz2008
为什么答案是:A
              B
              A fn<>
              ~A

可以帮我解释下吗?
#8
pangding2010-07-29 00:02
这就是多态问题。你应该去看看书,有些只是很基本的语法。
1