仓库源文站点原文


title: 面试复习(C++) date: 2021-02-22 14:23:24 categories: 学习笔记 tag:


C++的特性与轨迹

struct 和 class

堆和栈的区别

虚函数

静态函数和虚函数

vector

队列和堆栈的模拟

四个类型转换

转换 特点
static_cast 普通的转换,与普通的 C 语言的强制类型转换相同,在编译期间进行转换,所以会检查转换是否合法
const_cast 去除 const 属性,但是不能去除其本身的 const 属性
reinterpret_cast 无条件强制转换
dynamic_cast 将基类转换为派生类

三个访问限制

描述
private 私有的,仅此类可以访问此属性
protect 保护的,仅此类已经此类的派生类可以访问此属性
public 公有的,任意对象和方法可以访问此属性

下面这段代码最终结果是

main () {
    printf("xxx");
    fork();
}

static

指针和引用

平面几何问题

c++智能指针

构造函数

析构函数

重载和覆盖

new和malloc

C++ 编译

内存管理

静态方法

右值引用

C++ hash

size_t _Hash_bytes(const void ptr, size_t len, size_t seed = 0xc70f6907UL) { const size_t m = 0x5bd1e995; size_t hash = seed ^len; const char buf = static_cast<const char *>(ptr);

// Mix 4 bytes at a time into the hash.
while (len >= 4) {
    size_t k = unaligned_load(buf);
    k *= m;
    k ^= k >> 24;
    k *= m;
    hash *= m;
    hash ^= k;
    buf += 4;
    len -= 4;
}

// Handle the last few bytes of the input array.
switch (len) {
    case 3:
        hash ^= static_cast<unsigned char>(buf[2]) << 16;
        [[gnu::fallthrough]];
    case 2:
        hash ^= static_cast<unsigned char>(buf[1]) << 8;
        [[gnu::fallthrough]];
    case 1:
        hash ^= static_cast<unsigned char>(buf[0]);
        hash *= m;
};

// Do a few final mixes of the hash.
hash ^= hash >> 13;
hash *= m;
hash ^= hash >> 15;
return hash;

} ```