C++的大侠们看过来,有问题请教

来源:百度知道 编辑:UC知道 时间:2024/05/27 08:05:39
class A
{
A()
{
..........
}
........
.......
void print()
{
printf("A");
}
}

class B public: A
{
B()
{
..........
}
............
............
void print()
{
printf("B");
}
}

main()
{
A x= new B();
x.printf();

}

输出的结果应该是什么 ,该调用 那个类的 printf()

编译都通不过,还想执行

1 定义完class之后要有分号

2 A x= new B(); 不能这么玩的

建议看一下孙鑫老师的VC视频第2集

能不能编译通,你可以自己编译下
看下下面的代码,大概是你想表达的意思。按照下面的做法,结果是输出A中的print里的内容

#include<iostream>
using namespace std;

class A
{
public:
A(){}
void print(){cout<<"A"<<endl;}
};

class B: public A
{
public:
B(){}
void print(){cout<<"B"<<endl;}
};

int main(void)
{
A* ptb=new B;
ptb->print();
delete ptb;
return 0;
}

输出的是A,调用了类A的,调用哪个取决于x的类型

调用了A类的,假设你的语句能成立。你的意思是新建一个B对象,然后把赋值给X。你要知道,对象的赋值只是数据成员的复制,不可能对成员函数复制,因为对象本身并不包含成员函数,只是通过this指针调用成员函数罢了。