随笔分类 - 编程语言
这是一个父类,里面存放的子类是各种编程语言的子类。
目前暂时只存放的是C++子类
摘要:### 智能指针 + 智能指针式为了解决手动管理动态分配内存的问题,使用RAII(资源获取即初始化)原则,通过在对象的构造函数中分配内存,并在对象的析构函数中释放内存,从而保证资源的正确释放,避免了内存泄漏 **std::unique_ptr** + 管理独占所有权的对象指针,保证在其周期结束时释放
阅读全文
摘要:+ 模板就是将类型进行参数化 #### 函数模板 ```c++ //函数模板的定义格式 template 返回值类型 函数名(参数列表){ 函数体; } ``` + 模板形参不能为空,并且函数模板中每一个类型参数在函数参数表中至少使用一次,只有这样才能推断出具体的类型 ```c++ template
阅读全文
摘要:+ explicit关键字用于修饰单参数构造函数(因为无参数构造函数和多参数构造函数总是显式调用,这种情况在构造函数前面加explicit毫无意义)和转换函数,用于禁止隐式类型转换 + 作用是防止编译器在某些情况下自动执行隐式类型转换,以提高代码的明确性和安全性 ```c+ class A{ pub
阅读全文
摘要:+ volatile是关键字,用来修饰变量 + 作用 + 禁止编译器对变量的优化 + 编译器在优化代码时,会对变量的读取和写入进行优化,例如将变量从内存加载到寄存器中进行操作,以提高执行效率,但是对于volatile修饰的变量,编译器不能进行这些优化,以确保对变量的每次读写操作都是直接从内存中进行的
阅读全文
摘要:+ 无法令引用重新绑定到另一个对象上,因此引用必须初始化,引用并非对象,只是为一个已经存在的对象所起的另外一个名字 + 因为引用本身不是一个对象,所以不能定义引用的引用 ```c++ int a = 10; int &b = a; int &c = b;//此时c不是引用的引用,而是b c 都是a的
阅读全文
摘要:+ 可以使用const的地方就尽量使用const + 一般引用的类型必须与其所引用对象的类型一致,但是允许一个常量引用绑定到非常量的对象、字面值,甚至是一个一般表达式 ```c++ double a = 42.0; int &b = a;//编译错误,一般引用类型需要与所引用对象类型一致 ``` `
阅读全文
摘要:**向上转型(上行转换)** + 派生类对象转换为基类对象(包括指针和对象),直接转换由编译器完成,是绝对安全的 + 内存里面:基类对象相当于只是换了个地址,换成了派生类中存储基类成员的内存地址,但是派生类对象中有的,基类没有的变量仍然存在内存中(保留了再次从基类转换成派生类的可能性) **向下转型
阅读全文
摘要:+ 内存对齐是一种提高内存访问速度的策略,CPU在访问未对齐的内存可能需要经过两次的内存访问,而经过内存对齐一次就可以了 ```c++ cout<<"char:"<<sizeof(char)<<endl; cout<<"int:"<<sizeof(int)<<endl; cout<<"short:"
阅读全文

浙公网安备 33010602011771号