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

C++ 牛客网做题笔记【1000题总结】

2017-04-21 09:47 381 查看
1:private修饰的成员变量,只能被该类自身修改和访问,注意只能!同包中的其他类也只能访问保护和公开的成员

2:mod运算符,取余;不能重载的运算符  “.” "、" "::"  ''? :' "sizeof" sizeof不能被重载是因为像指针运算这样的内部操作都依赖于这个运算符

3:拷贝构造函数无需在调用另一个构造函数,它的参数是引用的类型

4:a++返回右值,是表达式,别再忘了!!!将a++ 转换为 a = a+1 ,后置的++或--的前面必须是左值a,不能是a+b这样的表达式

举例:9++;常量不可改变

(x+y)++;将其改为x+y = (x+y)++;错误,左值表达式不能有运算符

5:auto_ptr<A>Aobject(new A) 返回的就是A的智能指针,无需再加A*于尖括号中

6:void (A a){}  B 是A的派生类,B b; void(b);这是非地址传递,转化为了基类对象,若改为A *a或 A &a,则可实现多态

7:左值必须可修改,且减号-比等号=的优先级高,在处理宏定义时,要注意到其文本替换之后的正确性

8:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。

9:可以将迭代器看作指针,有==  * ++等运算符,但是没有左移运算符

10:viod类型没有分配内存,而引用必须是另外一个固定变量的别名,所以不能有void类型的引用

11:文字游戏,do while等循环体和条件表达式的执行次数其实是没有具体关系的,因为其中可能有break或者continue

12:理解!signed char a = 0xe0,补码为1110 0000,原码为补码减一,除符号位取反为:1010 0000 也就是-32  将其赋给无符号数unsigned char b = a ,char b = 224 ;将其赋给无符号的unsigned int c = a,拓展为32位,负数的原码转为补码,补码直接高位补符号位!为0xfffffe0

13:%是二目运算符,要求运算对象必须是整数

14:局部函数中也可以改变全局static的值!!!

15:参数多态:函数模版及类模版;包含多态:虚函数virtual;重载多态:重载函数;强制多态:强制类型转换;

多态分为两种:通用多态、特定多态,通用多态对工作的类型不加限制,允许不同类型的值执行相同的代码;特定多态只对有限数量的类型有效,对不同类型的值执行不相同的代码。通用多态:参数多态、包含多态;特定多态:重载多态、强制多态

16:在enum中,首元素不赋值的话,默认为0;后一个元素不赋值的话。比前一个元素大1;

17:float和double这些小数类型的值在趋近于0时,无限趋近于0来判断是否 == 0;用|x - 0| < err来判断,这里需要用到取绝对值符号,float是fabs(x) < 0.0001f

18:重入问题:多任务系统中,当一个函数执行到一半,另一道程序从函数开头开始执行的情况,函数结果不受影响,则称该函数为可重入函数,一般情况下:1:使用了静态数据结构
2:使用了malloc和free 3:使用了标准IO库 4:进行了浮点运算(浮点运算大多数使用协处理器或者软件模拟来实现),这些函数一般情况下是不可重入的

19:全局变量仅由单个C文件或者单个函数访问时,可将这个变量定义为静态,降低模块间的耦合度

20:整个表达式的值为左边变量的值,赋值语句a = 4;条件的判断为a赋值之后的值是否为0;m = a>b; 该条件表达式的值为判断a是否大于b
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息