《面向对象程序设计C++》期末考试试卷

《面向对象程序设计C++》期末考试试卷

 

  一、选择题(每小题3分,共48分。)

01、下列关于C++函数的叙述中,正确的是(  C  )。

  A)每个函数至少要具有一个参数   B)每个函数都必须返回一个值

  C)函数在被调用之前必须先声明   D)函数不能自己调用自己

02、下列关于类和对象的叙述中,错误的是(  A  )。

  A)一个类只能有一个对象         B)对象是类的具体实例

  C)类是对某一类对象的抽象       D)类和对象的关系是一种数据类型与变量的关系

03、在C++中,用于实现运行时多态性的是(  D  )。

  A)内联函数     B)重载函数     C)模板函数     D)虚函数

04、下列关于运算符重载的叙述中,正确的是(  B  )。

  A)通过运算符重载,可以定义新的运算符      B)有的运算符只能作为成员函数重载

  C)若重载运算符+,则相应的运算符函数名是+  D)重载二元运算符时,必须声明两个形参

05、对于语句 cout<<x<<endl;错误的是描述是(  D  )。

  A)“cout”是一个输出流对象    B)“endl”的作用是输出回车换行

  C)“x”是一个变量             D)“<<”称作提取运算符

06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是(  B  )。

  class MyBASE

  { private:    int k;

    public:     void set(int n){ k=n;}

                int get( )const{ return k;}   };

  class MyDERIVED: protected MyBASE

  { protected:  int j;

    public:     void set(int m, int n){ MyBASE::set(m); j=n;}

                int get( ) const { return MyBASE::get( )+j; }   };

 A)4    B)3    C)2    D)1

07、已知在一个类体中包含如下函数原型: Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是(   B)。

  A)这是运算符-的重载运算符函数  B)这个函数所重载的运算符是一个一元运算符

  C)这是一个成员函数             D)这个函数不改变类的任何数据成员的值

08、执行如下的程序段后,输出结果是(    )。

  cout.fill('*'); cout.width(6); cout.fill('#');  cout << 123 << endl;

  A)###123  B)123###  C)***123  D)123***

09、在下列函数原型中,可以作为类AA构造函数的是(  D  )。

  A)void AA(int);   B)int AA();   C)AA(int)const

### C++ 面向对象编程期末考试题 #### 单选题 1. 下列关于拷贝构造函数的说法错误的是 ( ) - A. 当用一个已有的对象初始化新创建的对象时会调用拷贝构造函数[^2] - B. 函数参数传递过程中不会触发拷贝构造函数的调用 - C. 如果类未定义任何构造函数,则编译器提供默认的拷贝构造函数 - D. 返回局部对象时,可能会调用拷贝构造函数来复制临时对象给返回值变量 正确答案:B 解释:当函数的形参是类的对象,在传入该对象作为实参时确实会发生拷贝操作从而调用拷贝构造函数。 ```cpp class MyClass { public: int value; // 默认构造函数 MyClass() : value(0) {} // 自定义拷贝构造函数 MyClass(const MyClass& other) { this->value = other.value; std::cout << "Copy constructor called." << std::endl; } }; void passByValue(MyClass obj) {} int main(){ MyClass originalObject; passByValue(originalObject); } ``` 此代码片段展示了如何通过按值传递的方式使拷贝构造函数被自动调用。 #### 编程题 编写一段完整的C++程序实现如下功能: - 设置输出流填充字符为`'*'`, 宽度设为6位; - 输出整数`123`; - 接着设置新的填充符为`'#'`再次尝试相同宽度下输出同一数值; ```cpp #include <iostream> using namespace std; int main(){ cout.fill('*'); cout.width(6); cout.fill('#'); cout << 123 << endl; return 0; } ``` 这段代码实现了指定格式下的控制台打印效果[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁佰_542586

天桥底下的穷屌丝和他の破鞋草席

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值