C++基础知识 易错点 总结(待补)

1. 在C++中,不能被重载的运算符有:

  • sizeof
  • . 成员运算符
  • .* 成员指针运算符
  • :: 作用域运算符
  • ?: 条件运算符

2. C++语言多态性:编译时多态和运行时多态:

  • 编译时多态可通过函数重载和模板实现;
  • 运行时多态可通过虚函数实现;
  • 实现运行时多态机制称为动态绑定;

3. C++中,头文件引用问题:

  • #include <> 编译器只搜索系统目录,不会搜索本地目录。比如你自己写一个头文件,你用#include <>会出错。
  • #inlude " " 首先搜索本地目录,如果本地目录没有才会搜索系统目录;
  • 可以把系统的文件 放到当前目录下 改成 ""   可以优先使用;

4. 设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为?

解析:此题考查运算符优先级和&&使用规则,首先=优先级低于判断< ,有m=0,&&左侧为false,则不执行右侧,因此n的值不变为2;

5. 重载函数是指同一个函数名可以对应多个函数的实现,编译器会根据参数个数、参数类型不同而自动调用相应的函数;注意函数返回值类型不能作为重载的判断条件。

6. 运算符重载规则:

  • 友元函数重载运算符时,因为没有this指针指向对象,因此参数个数保持和原来一样,参数列表为1,说明是1元,为2说明是2元;若无参,说明重载出错;
  • 成员函数重载时,参数列表为空,是一元,参数列表是1,为2元;

7. 循环语句问题:

  • while(条件)为false时,循环体不执行;
  • do while(),循环体至少执行一次;
  • continue只能出现在for/while/do while循环内部,或嵌套在此类循环里的语句和块内部,不能在单独的switch中用continue;
  • break用于终止离它最近的循环语句;

8. 构造函数问题:

  • 无论是默认构造函数还是拷贝构造函数,均无返回值;
  • 拷贝构造函数的参数可以使一个或多个,但左起第一个必须是类的引用对象;
  • 若类定义中没有声明拷贝构造函数,则编译器会自动生成一个缺省的拷贝构造函数,但是不会是该类的保护成员;
  • 通过拷贝函数可以将另一个对象作为对象的初值;
时间: 2024-10-20 14:33:36

C++基础知识 易错点 总结(待补)的相关文章

js基础知识易错点(一)

最近替另一个项目招人,要求基础知识好,随便问了一些基础题,发现了一些易错的点,总结一下. 1.判断一个空数组 var arr = []; 1)JSON.stringify(arr) == "[]" 2)arr instanceof Array && arr.length == 0 3)Array.prototype.isPrototypeOf(arr) && arr.length == 0 测试一个对象是否在另一个对象的原型链上 注意:此处要注意,单纯判

C语言基础知识----易让人头疼的关键字----const &amp;&amp; typedef &amp;&amp; define

const关键字 const=read only,修饰的为只读变量而不是常量.const修饰的变量不能用作数组的维数也不能放在switch语句的case:之后. 主要作用有: 1.通过把不希望被修改的变量或参数用const来修饰,编译器会保护这些变量不被修改增强系统的可靠性: 2.增强代码的可读性 [html] view plaincopyprint? const int a;      //a为常量不能被修改 int const a;      //a为常量不能被修改 const int *a

细节!重点!易错点!--面试java基础篇(一)

今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的. 2.任何静态代码块都会在main方法之前执行. 3.java程序的初始化顺序:原则:静态优先于非静态,且只初始化一次:父类优先于子类:按照成员定义顺序初始化.例顺序:父类静态变量,父类静态代码块,子类静态变量,子类静态代码块,父类非静态变量,父类非静态代码块,父类构造函数,子类非静态变量,子类非静态代码块,子类构造函数. 4.

细节!重点!易错点!--面试java基础篇(二)

今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断的依据是String类型equals的返回值,若已经定义,则直接获取对其的引用.此时不需要创建新的对象,如果没有定义,首先创建这个对象,然后把它加入到字符串池中,再将它的引用返回.(例:new String(”aaa“)可能创建了1个或者2个对象,如果常量池中原来有aaa那么之创建了一个对象,如果没

黑马程序员---C基础3【变量的易错】【程序结构】【if语句】【Switch语句】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [变量的易错] 1.变量为什么要初始化为0 int  sum,a=3: sum = sum+a 如果未初始化则会成为一个不确定的变量,结果也会不确定,容易出错. 2.不同类型的变量之间的转换 切记int  a=1,b=0:b=1-1.5:其中b为一个整型所有结果是保留整数部分的0,而不是-0.5,又因为0没有正负之分,所有保存结果为b=0: 3.关于Xcode的一个快速注释的插件 快捷键://

UIView易被忽略的基础知识

UILabel 设置属性字符串 根据字体自动调整宽度 粗体.斜体 根据文本自适应高度/宽度 1 UILabel *lable; 2 lable.attributedText; //设置属性字符串; 3 lable.adjustsFontSizeToFitWidth;//根据字体大小自动调整宽度 4 5 UIFont; 6 [UIFont boldSystemFontOfSize:(CGFloat)];//设置加粗字体大小 7 [UIFont italicSystemFontOfSize:(CGF

关于js的易错知识

1 var arr = []; 2 for(var i = 0;i<2;i++){ 3 arr[i]=function(){ 4 console.log(i);//这里由于内部没有定义i,根据函数链它会往上一层寻找最近的作用域下的i 5 } 6 } 7 arr[0](); 8 arr[1](); 上述输出的都是2. 为什么呢?其实上述的操作是给aar数组添加了两个函数,所以自然可以用数组加下标和()执行函数. 易错点是人们常常以为第一个输出的是0,第二个函数输出的是1. 但是由于函数执行是自上而

测试基础知识(白盒测试,黑盒测试,测试用例,功能测试等等)

测试基础知识 找实习工作的过程中总结了下测试基础知识,编程能力重要,测试基础同样重要,希望对大家有帮助 软件测试方法:静态测试和动态测试                     白盒测试和黑盒测试                     传统测试与面向对象测试 软件测试过程:单元测试,集成测试,系统测试,验收测试 按测试类型:功能.性能.界面.易用性测试.兼容性测试.安全性测试.安装测试 (单元测试:在编码过程中,对每个小程序单元测试) (集成测试:将单元集成在一起后,可称为组件) 回归测试.冒

[SQL] SQL 基础知识梳理(三)- 聚合和排序

SQL 基础知识梳理(三)- 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 目录 一.对表进行聚合查询 1.聚合函数 (1)5 个常用函数: ①COUNT:计算表中的记录(行)数. ②SUM:计算表中数值列的数据合计值. ③AVG:计算表中数值列的数据平均值. ④MAX:求出表中任意列中数据的最大值. ⑤MIN:求出表中任意列中数据的最小值. (2)聚合:将多行汇总成一行. 图1-1 Shohin 表 2.计算