摘要:前言 在 googletest的源码中,看到gtest-matchers.h 中实现的MatcherBase 类自定义了一个 VTable,这种设计实现了一种类似于C++虚函数的机制。C++中的虚函数机制实质上就是通过这种方式实现的,本文用c语言自定义虚函数表VTable实现了一下virtual的功
阅读全文
摘要:C++: 虚函数,一些可能被忽视的细节 引言:关于C++虚函数,对某些细节的理解不深入,可能导致我们的程序无法按预期结果运行,或是表明我们对其基本原理理解不够透彻。本文详细解答以下几个问题:实现多态,忘记写virtual会怎么样?虚函数的默认参数可以重载吗?纯虚函数真的不能有实现吗?析构函数可以是纯
阅读全文
摘要:# 为什么在 C++ 中,类的静态成员变量需要在源文件中进行定义? 类的静态成员变量需要在源文件中进行定义,以便在链接阶段能够正确地分配内存并为其分配地址。 当你在类的头文件中声明一个静态成员变量时,这只是告诉编译器该变量存在,并将在某处定义。这是因为头文件通常被包含在多个源文件中,如果在头文件中进
阅读全文
摘要:问题:直接通过while(cin>>str), 遇到空格就会停止。比如,输入dfah adfj djfak只能输入前两个单词。 解决: 要读入一整行,需通过getline(cin, inputLine)读入。 按分隔符split字符串,使用getline(stringstream, string,
阅读全文
摘要:C++ const 一、 语义约束 一个特定的对象不应该被修改,即是只读的。 二、用法 1. 修饰全局范围或命名空间内的静态对象 2. 修饰类的静态或非静态成员 3. 修饰指针或指针指向的数据 const出现在星号左边,则指针所指的内容为只读的。 const出现在星号右边,则指针自身为只读的。 co
阅读全文
摘要:c++ push_back()和emplace_back()区别 References C++中push_back和emplace_back的区别 push_back v.s. emplace_back 一、源码分析 ###(1)push_back()定义 // stl_vector.h templ
阅读全文
摘要:c++ 动态内存与智能指针详解 一、 动态内存 (一)程序对象的生存期 全局对象在程序启动时分配,在程序结束时销毁。 对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁。 局部static对象在第一次使用前分配,在程序结束时销毁。 C++还支持动态分配对象。动态分配的对象的生存期
阅读全文
摘要:参考链接:https://juejin.cn/post/6844904152833753096 1. 程序对象的生存期 全局对象在程序启动时分配,在程序结束时销毁。 对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁。这个过程由栈自动完成。 局部static对象在第一次使用前分配
阅读全文
摘要:显式转换:显式将一种类型转换为另一种类型。 References: C++中的显示数据类型转换 与命名的强制类型转换相比,旧式的强制类型转换从表现形式上来说不那么清晰明了,容易被看漏,所以一旦转换过程出现问题,追踪起来也更加困难。 C++ 引入新的强制类型转换机制,主要是为了克服C语言强制类型转换的
阅读全文