您的位置:首页 > 编程语言 > C语言/C++

【BigHereo 36】---L9---C++真题之 改错题

2017-10-26 12:00 651 查看
 L9---C++真题之 改错题
 
 
 
 2016.4真题:    1,访问权限:子类不能用,改错public就行了. 
   2,初始化,定义,赋值等等.     (1)在main中, int x1=10;x2=20;---错了没有定义x2的类型,改intx1=10,x2=20;中间分好改成逗号.      (2)在类中,不能同时初始化并赋值,例如: int x1=20; 这是错误 int a=10;int*p=a; ------这是不正确的,p是指针,a是int值,所以类型不对.                     改成: int*p=&a; 
   3,const应用:     (1)int *const p=&x1;  ---这是错误, 指针const之后就不能在赋值了,指针必须定义设置变量或对象地址.改成 int *p=&x1;   (2)纯虚函数, virtual void fun()=0;       函数定义: void func() const;     4,友元(1)friend void B::fun();      5,模板类,模板函数   一有这个,就必须想到template 和 class,typename 这几个关键字.template<T>;---错误,缺少class或typename 
   6,函数类型   一定要记得写函数类型, int 或double(1)改错: int Test:: x=70;(2)填空中,如果没有提前声明i, j; 就必须 声明类型:   ( int i=0;i<=10;i++)   (3)2016.10T44: 有void 就没有 return; 如果是其他 int, double 声明就必须有返回类型. 
   7,引用 && 指针      (1)main()函数中,直接用对象,   swap(&a,&b)---这是错误的, 改为 swap(a,b);        (2)*p是指针, 不能和 int n 划等号, 但p=n; 这是可以的.  int*p2;*&p=p2;---这是可以的,但是不能声明对X的引用, int*&p=&x;--错误.                                                                                        但int *p=&x;可以.    8,重载运算符:  关键字 operator      (1)s2.operator=(s1); -----operator=等同于=复制号,即 s2=s1;      (2)重载使用对象引用复制运算符:  str&operator=(str& a);    重载使用指针赋值运算符:        str& operator=(char *s); str& 本身就是一个返回类型   (3) str&  str:: operator=(str& a){       if(this==&a)             return *this;delete st; st=new char[ strlen(a.st)+1];  //重新申请一个内存 strcpy(st,a.st);   return *this;}    重载运算符保持原有   操作数, 优先级和结合性不变      
[align=center][/align]2015.10 T41:return p; 错误, 声明的是 int *p; 应该返回变量, return *p; 
2015.10 T43:  x=5;  错误,复制形式错误,应改为 int A::x=5; 返回类型在前面. 
2015.10 T44:      const A a(4);        a.set(6);       -------错误, 已经const 了就不能在赋值,变量才能赋值. 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: