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()
{
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指针调用成员函数罢了。