C/C++刷题总结(3)

  1. ++运算符
    ++运算符的对象必须是左值,而表达式的值都是右值。区分左值与右值的最简单方式就是:左值可以对其取地址赋值,右值不可以取地址。
    比如(x+y)++里的(x+y)就是表达式,
    ++(a-b–)也是

注意后置++的优先级高于前置++

例题表达式
double d;
d=1,d+5,d++;此时d的值为2

  1. 不能声明为虚函数的函数
    普通函数(非成员函数),静态成员函数,内联成员函数,构造函数,友元函数。

  2. #ifdef
    #define s345是空宏定义
    一般空的宏定义的作用是
    1.对函数进行标识、说明
    2.可以解决编译器兼容的问题,

  3. 32位与64位
    差别

32位 64位
char* 4字节 8字节
long 4字节 8字节

最大的不同点就是在long型和指针类型长度不一样,对于指针而言,64位机器可以寻址2^64,每个内存地址长度为64位,即8字节。

  1. #include “stdlib.h”会先搜索本地工作目录,没有找到对应头文件就搜索标准库,然而#include <stdlib.h>是直接搜索标准库。所以后者速度更快

  2. 多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。

  3. 函数指针与该指针所指的函数必须具有一致的noexcept异常说明,而非相同。编译器并不会在编译时检查noexcept声明。

  4. 文件指针
    通俗的说,文件指针就是指向文件的指针变量,定义说明文件指针的一般形式为:FILE *指针变量标识符;其中FILE应为大写。文件指针指向的是一块内存区域,这块区域存储着打开的文件的相关信息,包括文件读取指针当前位置、文件读取缓冲区大小等信息,并不是指向文件的。

  5. 面向对象的基本原则
    s( Single-Resposibility Principle ): 单一职责原则
    一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因
    o( Open-Closed principle ): 开放封闭原则。软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的
    l( Liskov-Substituion Principle ): 里氏替换原则。子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础
    i( Interface-Segregation Principle ): 接口隔离原则,使用多个小的专门的接口,而不要使用一个大的总接口
    d( Dependecy-Inversion Principle ): 依赖倒置原则,依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。

  6. inline
    使用 inline 关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如:若此函数体太大,则不会把它作为内联函数展开的。
    关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用
    inline 函数可以定义在源文件中,但多个源文件中的同名 inline 函数的实现必须相同。一般把 inline 函数的定义放在头文件中更加合适。
    定义在类声明之中的成员函数将自动地成为内联函数

  7. const成员只能在构造函数的初始化列表中初始化
    如果非要在类中声明处初始化,就要加上static才行,而且初始化的对象必须是整型

  8. BitCount算法——MIT HAKMEM算法
    int bitcount(unsigned int n)
    {
    unsigned int tmp;

    tmp = n
    - ((n >> 1) & 033333333333)
    - ((n >> 2) & 011111111111);

    tmp = (tmp + (tmp >> 3)) & 030707070707

    return (tmp%63);
    }
    计算32位整型数中的’1’的个数
    其他:
    1.read函数能够从输入流中提取指定长度的字节序列
    2.int左移32位相当于不变,左移50位相当于左移18位
    3.32位系统最大的寻址范围2^32
    4.优先级:算术运算符>移位>关系运算符>逻辑位运算符>逻辑运算符
    5.文件可分为ASCII码文件(文本文件)和二进制文件两种
    6.printf默认右对齐,printf输出的数据不仅受输出域宽和小数域宽限制,也受数据在内存中存储精度影响

发布了21 篇原创文章 · 获赞 0 · 访问量 381

猜你喜欢

转载自blog.csdn.net/weixin_41605876/article/details/104824079