问题 单项选择题

有如下程序: #include <iostream.h> #include <iomanip.h> using namespace std; class CSum { int x,y; public: CSum (int x0,int y0):x(x0),y(y0){} friend ostream & operator<<(ostream& os,const CSum& xa) {os<<setw(5)<<xa.x+xa.y;return os; } }; int main () { CSum y(3,5); cout<<setfill(’*’)<<8; cout<<y; return 0; } 执行上面程序的输出是

A.88

B.****88

C.****8****8

D.8****8

答案

参考答案:D

解析: 本题考核知识点包括:类与对象、运算重载、I/O的格式化输出。语句 "cout<<setfill(’*’)<<8;"输出8。语句"cout<<y;"将调用运算符重载输出****8,因为前面语句中设置的填充符号现在还有效,而数据"8"的宽度不够5,所以剩下4个字符的宽度用填充符号"*"填充。

单项选择题 A1型题
单项选择题 B型题