一道C++笔试题(100分)

  • 主题发起人 主题发起人 strongburn
  • 开始时间 开始时间
S

strongburn

Unregistered / Unconfirmed
GUEST, unregistred user!
#inlcude "stdafx.h"
class B{
char c;
public:
B( char n):c(n) {}
virtual void X(void) {printf("%c",c);}
void Y(void) {printf("%c",c-1);}
virtual ~B(void) {X();Y():}
};
class D:public B{
char c;
public:
D(char n):B(n+1),c(n) {}
void X(void) {printf("%c",c);}
virtual void Y(void) {printf("%c",c-1);}
~D(void){X();Y();}
};
B *newB(char c)
{
return new D(c);
}
int main(int argc, char* argv[])
{
B *pb= newB('X');
pb->X();
pb->Y();
delete pb;
return 0;
}
分析程序运行的过程及结果!
 
.............
 
有没有人可以注释一下。
 
你把它弄到VC下运行一下,结果不就出来了!
 
结果我到是知道的,关键c++语法不熟,D(char n):B(n+1),c(n) {} 是什么意思 ?
运行结果是XXXWYX
 
D(char n):B(n+1),c(n) {} 的意思是定义类D的构造函数D,这个函数带有一个字符类型的参数n,由于基类带有参数,定义的这个参数是向基类传递的。B(n+1),就是想基类传递参数的。
 
回答的不错.
 
因为类B的构造函数带有参数 所以要在D 的构造函数后面初始化!
 

Similar threads

I
回复
0
查看
522
import
I
I
回复
0
查看
741
import
I
I
回复
0
查看
669
import
I
I
回复
0
查看
850
import
I
后退
顶部