摘要:
阅读全文
摘要:
static_cast<>在C++中有以下几个优点: 类型检查:static_cast<>在编译时期进行类型检查,如果类型转换不合法,编译器会报错。这是它相比C风格类型转换的一个重要优势,因为C风格类型转换不进行类型检查,可能会导致类型转换错误 代码清晰:static_cast<>的出现,使得类型转 阅读全文
摘要:
第一次 检查模板是否有语法错误 第二次检查实例化模板是否合法 阅读全文
摘要:
代码区 栈 堆 全局/静态存储区 常量区 阅读全文
摘要:
在C++中,虚函数表(vtable)是存储在类的内存空间中的,每个包含虚函数的类都有一个虚函数表。这个表是一个存储虚函数地址的数组,它在编译时被创建。 虚函数表保存在.rdata只读数据段,也就是C++内存模型中的常量区。虚函数表属于类,类的所有对象共享这个类的虚函数表。 虚表指针(vptr)是对象 阅读全文
摘要:
这段代码是一个C++模板,用于检查一个类型是否是类。下面是对这段代码的详细解释: template<typename _Tp>:这是一个模板声明,表示这个结构体可以接受一个类型参数_Tp。 struct is_class:这是一个结构体的声明,结构体的名字是is_class。 : public in 阅读全文
摘要:
volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。 阅读全文
摘要:
在C++中,多态是面向对象编程的一个重要特性,它允许通过基类的指针或引用来调用派生类的成员函数。多态的字面意思是“多种形态”,它允许相同的操作可以作用于不同的对象,而具体执行的操作则取决于对象的类型和特性。 在C++中,多态主要通过虚函数来实现。虚函数是在基类中使用关键字virtual声明的函数,在 阅读全文
摘要:
在C++中,如果基类的析构函数不是虚函数,那么在使用基类指针删除派生类对象时,只会调用基类的析构函数,而不会调用派生类的析构函数。 这是因为在C++中,非虚函数是在编译时期就已经确定了调用关系,这种确定调用关系的方式被称为静态绑定。当基类指针指向派生类对象时,如果析构函数不是虚函数,那么在删除指针时 阅读全文