问答题


阅读下列说明、图和C++代码,回答问题1至问题3。
【说明】
已知四个类之间的关系如图2-2所示,分别对每个类的方法进行编号,例如Shape的perimeter()方法为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为2:perimeter(),依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。


【C++代码】
Triangle *tr=new Triangle();
Square *sq=new Square();
Shape *sh =tr;
【问题3】 不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的编号)。
①sq=sh; ②sh=tr; ③tr=sq; ④sq=tr; ⑤sh=sq;

【参考答案】

② ⑤[分析] 根据C++代码: Triangle *tr=new Triangle(); Square *sq=new......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【应用说明】 某电视台拟开发应用程序来显示戏曲大赛中1~4号四位选手决赛的现场投票情况。该程序从现场观众中(不超过2000人)每0.5秒收集一次对这四位选手的支持票数,并在屏幕上动态显示这四位选手的票柱(以高度反映票数)与累计得票数,如图2-3所示。投票过程限时30秒,每名观众最多为1名选手投票。投票结束后系统通过比较各位选手的累计得票数,显示决赛结果:“*号胜出”(如有单个冠军)或“继续进行PK”(如有多人获得相同的最高票数)。 在开发该程序的过程中创建的主要控件及其初始属性值说明如下:控件名类型用途初始属性设置ShpM(1to4)形状数组显示各选手得票情况矩形,实心,高度0txtM(1to4)文本框数组显示各选手得票数0cmdStatr命令按钮启动计票标题:开始投票txtResult文本框显示决赛结果空Timl计时器每半秒收集处理一次间隔时间0.5秒,关闭状态 该程序中设置公共变量T动态记录投票时间。四个形状ShpM(1 to 4)动态增长的底线固定。 【Visual Basic程序代码】 Dim T As Integer ’声明全局变量 Private Sub Form_Load() For i=1 To 4 ShpM(i).Top=2000 : ShpM(i).Height=0 ’初始票柱高度为0 TxtM(i).Text=0 Next i Timl.Enabled=False : Timl.Interval=500 : T=0 End Sub Private Sub CmdStart Click() Timl.Enabled=True ’开始投票 CmdStart.Enabled=False End Sub Private Sub Timl Timer() Dim n(1 To 4) As Integer ’n(1 to 4)为每次收集的票数 Dim i As Integer,j As Integer Dim G As Integer ’G用于计算最高票数 Dim ng As Integer ’ng用于计算冠军个数 For i=1 To 4 n(i)=... ’收集i号选手的票数,此处省略 TxtM(i).Text=TxtM(i).Text+n(i) ’累计票(VB能进行自动转换) ShpM(i).Top=ShpM(i).Top-n(i) ShpM(i).Height=ShpM(i).Height+ (1) ’算出票柱高度 Next i T=T+1 ’计时 If T=60 Then ’投票时间到 (2) ’停止数据收集处理 ng = 1 G=TxtM(1).Text For i=2 To 4 If G<TxtM(i).Text Then G=TxtM(i).Text ng= (3) j = i Else If G=TxtM(i).Text Then ng= (4) ’计算冠军个数 End If Next i If ng=1 Then txtResult. Text= (5) ’单个冠军结果 Else txtResult. Text= 继续进行PK End If End If End Sub