电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C++程序设计错题汇总第1号

125页
  • 卖家[上传人]:h****u
  • 文档编号:51533594
  • 上传时间:2018-08-14
  • 文档格式:PPTX
  • 文档大小:317.78KB
  • / 125 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、C+程序设计错题第1号201607161有如下类及函数的定义:class Wowint k;public:Wow(int n=0):k(n)int incre() return +k; int decre();void show()const;int Wow:decre() return -k; inline void display( Wow w) w.show(); void Wow:show()const coutusing namespace std;void fun(double) cout1; i-=2) cout using namespace std;class MyClass public:MyClass(int i=0) cout#include using namespace std;class MyBagpublic:MyBag(string br,string cr):brand(br),color(cr) coutusing namespace std;class AAchar c;public:AA():c(X) AA(char ch):c(ch) AA(

      2、AA class TVpublic:TV(int s=41):size(s) TV(const TV ;TV fun(TV return t; int main() TV x,y; x=fun(y); return 0; 则 TV 类的复制构造函数被调用的次数是A) 1次B) 2次C) 3次D) 4次【解析】拷贝构造函数,是一种特殊的构造函数,它由 编译器调用来完成一些基于同一类的其他对象的构建及 初始化。拷贝构造函数要调用基类的拷贝构造函数和成 员函数。本题中调用fun函数时调用了一次复制构造函数 ,函数返回执行x=fun(y)时又调用了一次复制构造函数, 所以总共2次。B选项正确。26复制构造函数被调用的情况: (1)函数参数为对象类型(值传递) (2)函数返回类型为对象类型 (3)定义对象并用对象初始化有如下程序:#include#includeusing namespace std;class MyBagpublic:MyBag(string br=“ABC“):brand(br) coutusing namespace std;class test private:int a

      3、;public:test() coutusing namespace std;class Point public:static int number;public: Point() number+; Point() number-; ;int Point:number=0;int main() Point *ptr;Point A, B;Point* ptr_point =new Point3;ptr=ptr_point;Point C;coutusing namespace std;class AApublic:AA() couta = a; / static int g() return a; / void h(int b) Test:b = b; ; / private:int a;static int b;const int c;int Test:b = 0;在标注号码的行中,能被正确编译的是()。A) B) C) D) 【解析】只能通过构造函数的参数初始化列表对常数据 成员进行初始化,本题中常数据成员为c。通过默认构 造函数初始化c,所以不正确。常成员函数只能引用本类 中数

      4、据成员,而不能修改它,所以不正确。静态成员 函数由于没有this指针,所以不能访问本类中的非静态成 员,所以错误。33静态成员函数可以直接访问该类的静态数据和函数成 员。 而访问非静态成员,必须通过对象名。有如下类声明:class SAMPLE int n;public:SAMPLE(int i=0):n(i) void setValue(int n0);下列关于setValue成员函数的定义中,正确的是()。A) SAMPLE:setValue(int n0) n=n0; B) void SAMPLE:setValue(int n0) n=n0; C) void setValue(int n0) n=n0; D) setValue(int n0) n=n0; 【解析】本题考查在类外定义类的成员函数,需要使用作用域限定符“:“,属于基础知识,本题答案为B。34由于常对象不能被更新,因此()。A) 通过常对象只能调用它的常成员函数B) 通过常对象只能调用静态成员函数C) 常对象的成员都是常成员D) 通过常对象可以调用任何不改变对象值【解析】本题考查常对象的基本知识,常对象只能调用它的常成

      5、员函数,而不能调用非const函数,常对象的成员函 数不一定都是常成员函数,只需保证其数据成员是常数据成员即可。所以本题选A。35有如下程序:#include using namespace std;class A public:static int a;void init() a = 1; / 此处的a为静态成员变量aA(int a = 2) init(); a+; / 此处的a为函数参数变量a;int A:a = 0;A obj;int main()cout using namespace std;class Sample friend long fun(Sample s);public:Sample(long a) x = a; private:long x;long fun(Sample s) if (s.x #includeusing namespace std;class MyBagpublic:MyBag(string br=“ABC“):brand(br) coutusing namespace std;class XB int a;public:static int

      6、b;XB(int aa):a(aa) b+; XB() b-; int get() return a; ;int XB:b=0;int main() XB d(2);int n=d.get()+XB(3).get(); / XB(3)对象执行完算术 表达式就已经销毁掉了coutusing namespace std;void fun(char c) coutusing namespace std;class A public:static int a;void init() a = 10; A(int a = 5) init(); a+=10; ;int A:a = 0;A obj;int main()cout 所有类型转化运算符只能作为成员函数重载已知Value是一个类,value是Value的一个对象。下列以非成员函数形式重载的运算符函数原型中,正确的是()。A) Value operator +(Value v, int i);B) Value operator +(Value v=value, int i);C) Value operator +(Value v, int i=

      7、0);D) Value operator +(Value v =value, int i=0);【解析】本题考查运算符重载,其中重载运算符的函数不能有默认的参数,所以本题答案为A。55运算符函数不能使用默认参数要将前缀运算符 - 重载为 Incr 的非成员函数,下列原型中,可作为该重载函数原型的是A) IncrB) Incr operator -(int);C) IncrD) Incr operator -(Incr【解析】本题考查重载运算符,题目中要求将运算符 - 重载为 Incr 的非成员函数,只有C选项能够将运算符重载为 非成员函数。56已知一运算符函数没有参数。下列关于该运算符函数的表述中错误的是A) 该运算符函数是成员函数B) 该运算符是一元运算符C) 由于无参数,使用该运算符时不需要操作数D) 该运算符不是后缀+或后缀-【解析】本题主要考查运算符重载函数,题目中说该运算符重载函数没有参数,那么只能是重载一元运算符,所以 需要一个操作数,并且有默认this指针,所以是成员函数,C选项错误57下面是重载为非成员函数的运算符函数原型,其中错误的是A) MyClass operat

      8、or * (MyClass);B) MyClass operator + (MyClass,int);C) MyClassD) MyClass【解析】本题考查赋值运算符重载,赋值运算符只能作为类的成员函数重载,所以D选项错误。58在名为 BigNumber 的类的类体中对运算符函数double进行了如下声明:operator double(BigNumber);函数声明中有一个明显的错误,这个错误就是A) 参数表中不应该有任何参数B) 缺少对函数返回类型的说明C) 参数声明中缺少参数变量D) 函数声明中缺少函数体【解析】本题考查类型转换函数,其一般形式如下:operator 类型名()实现转换的语句在函数名前面不能指定函数类型,函数没有参数,所以A选项错误。59有如下类定义:class MyClass public:MyClass(double d=0.0):val(d) _ /前缀自增运算符+的声明private:double val; ;若要使语句序列MyClass x(2.1),y;y=+x;能够正常运行,横线处的语句应为A) MyClass B) MyClassC) MyCla

      9、ss operator+(int); D) MyClass operator+();【解析】横线处填写的语句,是重载前缀自增运算符+ 的函数声明,为了与内置类型一致,前缀自增运算符应 该返回自增对象的引用,选项C、D错误;自增运算符是 一元运算符,即操作数是类对象,所以参数列表为空, 选项B错误;答案为A。60有如下类定义:class MyClass public:MyClass(double d=0.0):val(d) _ /运算符函数-的声明private:double val; ;若要使语句序列MyClass y(4.6),z;z=6.7-y;能够正常运行,横线处的声明语句应为A) friend MyClass operator-(MyClassB) friend MyClass operator-(double, MyClass);C) friend MyClass operator-(MyClassD) friend MyClass operator-(double【解析】由调用函数6.7-y可知,double类型在运算符“-“ 的左边,应该作为运算符函数“-“的第一形参,选项A、C 错误;由于运算符“-“函数并不改变操作数的状态,所以 形参应该声明为const对象的引用,或者按值传递,参数 按引用类型传递可能会改变操作数的状态,选项D错误 ;答案为B。61将前缀运算符“-“重载为非成员函数,下列原型中能正确用于类中说明的是()。A) DecrB) Decr operator -(DecrC) friend DecrD)

      《C++程序设计错题汇总第1号》由会员h****u分享,可在线阅读,更多相关《C++程序设计错题汇总第1号》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.