2021年6月23日

摘要: 浅拷贝: 浅拷贝只是拷贝一个指针,并没有新开辟一个地址,拷贝的指针和原来的指针指向同一块地址,如果原 来的指针所指向的资源释放了,那么再释放浅拷贝的指针的资源就会出现错误。 深拷贝: 深拷贝不仅拷贝值,还开辟出一块新的空间用来存放新的值,即使原先的对象被析构掉,释放内存了也 不会影响到深拷贝得到的值 阅读全文
posted @ 2021-06-23 22:00 超人不会灰啊 阅读(73) 评论(0) 推荐(0)
 
摘要: C++的多态性,一言以蔽之就是: 在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据所指对象的实际类型来 调用相应的函数,如果对象类型是派生类,就调用派生类的函数,如果对象类型是基类,就调用基类的 函数。 举个例子: 例子中,Base为基类,其中的函数为虚函数。子类1继承并 阅读全文
posted @ 2021-06-23 21:56 超人不会灰啊 阅读(192) 评论(0) 推荐(0)
 
摘要: (1)重载(overload) 重载是指在同一范围定义中的同名成员函数才存在重载关系。主要特点是函数名相同,参数类型和数目 有所不同,不能出现参数个数和类型均相同,仅仅依靠返回值不同来区分的函数。重载和函数成员是否 是虚函数无关。举个例子: (2)重写(覆盖)(override) 重写指的是在派生类 阅读全文
posted @ 2021-06-23 16:56 超人不会灰啊 阅读(290) 评论(0) 推荐(0)
 
摘要: 构造函数: 1.构造函数不能定义为虚函数。在构造函数中可以调用虚函数,不过此时调用的是正在构造的类中的 虚函数,而不是子类的虚函数,因为此时子类尚未构造好。 2.虚函数对应一个vtable(虚函数表),类中存储一个vptr指向这个vtable。如果构造函数是虚函数, 就需要通过vtable调用,可是 阅读全文
posted @ 2021-06-23 16:31 超人不会灰啊 阅读(762) 评论(0) 推荐(0)
 
摘要: 由于类的多态性,基类指针可以指向派生类的对象,如果删除该基类的指针,就会调用该指针指向的派 生类析构函数,而派生类的析构函数又自动调用基类的析构函数,这样整个派生类的对象完全被释放。 如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除基类指针时,只会调用基类的析构函 数而不调用派生类析构函数 阅读全文
posted @ 2021-06-23 16:26 超人不会灰啊 阅读(441) 评论(0) 推荐(0)
 
摘要: 什么是类型安全? 类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。 “类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候 也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。 类型安全的编程语言与类型安全 阅读全文
posted @ 2021-06-23 16:16 超人不会灰啊 阅读(207) 评论(0) 推荐(0)
 
摘要: 引入原因 : 编写单一的模板,它能适应多种类型的需求,使每种类型都具有相同的功能,但对于某种特定类型,如果要实现其特有的功能,单一模板就无法做到,这时就需要模板特例化 定义 : 对单一模板提供的一个特殊实例,它将一个或多个模板参数绑定到特定的类型或值上 (1)模板函数特例化 必须为原函数模板的每个模 阅读全文
posted @ 2021-06-23 15:51 超人不会灰啊 阅读(276) 评论(0) 推荐(0)
 
摘要: 为了能够正确的在C++代码中调用C语言的代码:在程序中加上extern "C"后,相当于告诉编译器这部分 代码是C语言写的,因此要按照C语言进行编译,而不是C++; 哪些情况下使用extern "C": (1)C++代码中调用C语言代码; (2)在C++中的头文件中使用; (3)在多个人协同开发时, 阅读全文
posted @ 2021-06-23 15:08 超人不会灰啊 阅读(135) 评论(0) 推荐(0)
 
摘要: 一.当用于类类型对象时,初始化的拷贝形式和直接形式有所不同:直接初始化直接调用与实参匹配的 构造函数,拷贝初始化总是调用拷贝构造函数。拷贝初始化首先使用指定构造函数创建一个临时对 象,然后用拷贝构造函数将那个临时对象拷贝到正在创建的对象。举例如下: 二.为了提高效率,允许编译器跳过创建临时对象这一步 阅读全文
posted @ 2021-06-23 14:36 超人不会灰啊 阅读(260) 评论(0) 推荐(0)
 
摘要: 1.非静态成员的数据类型大小之和 2.编译器加入的额外成员变量(如指向虚函数表的指针)。 3.为了边缘对齐优化加入的padding。 4.空类(无非静态数据成员)的对象的size为1, 当作为基类时, size为0. 阅读全文
posted @ 2021-06-23 14:19 超人不会灰啊 阅读(143) 评论(0) 推荐(0)
 
摘要: 一、static 不考虑类的情况: 1. 隐藏。所有不加static的全局变量和函数具有全局可见性,可以在其他文件中使用,加了之后只能在该文件所在的编译模块中使用。 2. 默认初始化为0,包括未初始化的全局静态变量与局部静态变量,都存在全局未初始化区。 3. 静态变量在函数内定义,始终存在,且只进行 阅读全文
posted @ 2021-06-23 14:00 超人不会灰啊 阅读(110) 评论(0) 推荐(0)