随笔分类 - C++ / C++基础知识
摘要:实现C++线程安全的案例模式的三种方式: 局部静态变量 饿汉式初始化 懒汉式初始化 局部静态变量(最常见) 我们知道在一个函数中定义一个静态局部变量,它只会初始化一次,就是在这个函数第一次调用的时候,以后无论调用几次,函数内的局部变量都不再初始化,并且所有对象的静态成员变量都共享同一块静态存储空间。
阅读全文
摘要:4.5.1 加号运算符重载 作用:实现两个自定义数据类型相加的运算 1 #pragma once 2 #include <iostream> 3 #include <string> 4 using namespace std; 5 //加号运算符重载 6 //1. 成员函数重载 7 class Pe
阅读全文
摘要:类模板 定义 所谓类模板,实际是建立一个通用类,其数据成员,成员函数的返回类型和形参类型不具体指定,用一个虚拟的类型来代表。使用类模板定义对象时,系统会根据实参的类型来取代类模板中虚拟类型从而实现了不同类的功能 定义一个类模板与定义函数模板的格式类似,必须以关键字template开始,其定义的一般格
阅读全文
摘要:函数模板 泛型编程主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板 1.2.1 函数模板语法 函数模板作用: 建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表 语法: 1 template<typename T> 2 函数声明或定义 template
阅读全文
摘要:虚函数 在类的定义中,前面有virtual 关键字的成员函数就是虚函数 注:派生类中的成员函数 与 基类中虚函数同名且参数相同的函数,不加virtual也会自动变成虚函数 纯虚函数与抽象类 没有函数体的虚函数叫做纯虚函数,包含纯虚函数的类叫抽象类。 例如上面Base中的Examp就是一个纯虚函数,因
阅读全文
摘要:1. const_cast const_cast是C++中的一个类型转换运算符,用于移除对象的常量性(const)或易变性(volatile)。它可以用于修改指针或引用的常量属性,但必须小心使用,因为修改常量对象的值可能导致未定义的行为。 const_cast的语法如下: const_cast<ne
阅读全文
摘要:2.4 初始化和const const对象一旦创建后其值就不能再改变,所以const对象必须初始化,并且可以是任意复杂表达式。 如果利用一个对象去初始化另一个对象,则它们是不是const都无关紧要,例如: int i = 42; const int ci = i; //正确:i的值被赋给了ci in
阅读全文
摘要:一.引用和指针 指针就是内存地址,指针变量是用来存放内存地址的变量。不同类型的指针变量所占用的存储大小都是相同的(32位 -- 4个字节;64位 -- 8个字节)。 引用不是新定义一个变量,而是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,它和引用对象公用一块内存空间。并且引用类型和引用
阅读全文