跳到主要内容

C++实践笔记

阅读量: 101
阅读人次: 102

记了很多次笔记,简单的不会去看,复杂的记了又看不上。这次就以面试为目的,记录那些自己遇到的不会的知识点。

我在创建一个 C++ 类 Test,在其构造函数执行资源分配。如果分配失败,我该如何通知构造函数外部?

  1. 如何定义一个数组指针?

    int arr[5] = {1, 2, 3, 4, 5};
    int (*p)[5] = &arr; // p是指向包含5个int元素的数组的指针
  2. 如何按位定义结构体?

    struct 结构体名 {
    数据类型 成员名 : 位数;
    // 例如:unsigned int flag1 : 1;
    };
  3. 编写一个判断大小端存储方式的函数。

    #include <stdio.h>

    int is_little_endian() {
    union {
    int num;
    char byte;
    } test = {.num = 1}; // 初始化联合体成员
    return test.byte == 1; // 共享内存首字节[1,8](@ref)
    }

    int main() {
    printf("%s\n", is_little_endian() ? "小端模式" : "大端模式");
    return 0;
    }
  4. std::vectorresize()reserve() 的区别。

    reserve()改变的是vectorcapacity,也就是容量,且只在扩大时,也就是reserve()的参数大于当前容易的capacity时才生效,小于时不作用。如果要减小vectorcapacity应该使用shrink_to_fit()capacity等于vectorsize

    size()函数用于改变vector的size。当size大于当前capacity时,vector会进行扩容,然后再将现有元素复制到新的内存空间上去。小于capacity时,也只改变size大小,不改变capacity大小。