随笔分类 - C++
摘要:程序在堆中申请的动态内存,在程序使用完成时没有得到及时的释放。当这些变量的生命周期已结束时,该变量在堆中所占用的内存未能得到释放,从而就导致了堆中可使用的内存越来越少,最终可能产生系统运行较慢或者系统因内存不足而崩溃的问题。 内存泄漏并非指内存从物理上消失,而是指程序在运行过程中,由于疏忽或错误而失
阅读全文
摘要:字节序:字节顺序又称端序或尾序(Endianness),在计算机科学领域中,指电脑内存中或在数字通信链路中,组成多字节的字的字节的排列顺序。 在几乎所有的机器上,多字节对象都被存储为连续的字节序列。例如在 C 语言中,一个类型为 int 的变量 x 地址为 0x100,那么其对应地址表达式 &x 的
阅读全文
摘要:C 语言是典型面向过程(Procedure Oriented)的编程语言,C++ 则是典型面向对象(Object Oriented)的编程语言,当然 C++ 也支持面向过程编程。 面向过程(Procedure Oriented):一种以过程为中心的编程思想,侧重于分析解决问题所需的步骤,使用函数把这
阅读全文
摘要:C++ 11的特性: 1.auto 类型推导: auto 关键字:自动类型推导,编译器会在编译期间通过初始值或者函数返回值推导出变量的类型,通过 auto 定义的变量必须有初始值。auto 关键字基本的使用语法如下: auto var = val1 + val2; // 根据 val1 和 val2
阅读全文
摘要:确保类的结构体是公用的class Outer { public: struct Inner { int x, y; }; }; int main() { Outer::Inner obj; return 0; }
阅读全文
摘要:内存对齐:计算机中内存的地址空间是按照 byte 来划分的,从理论上讲对任何类型变量的访问可以从内存中的任意地址开始,但实际情况是:在访问特定类型变量的时候通常在特定的内存地址访问,这就需要对这些数据在内存中存放的位置进行限制,各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这
阅读全文
摘要:模式:在某些场景下,针对某类问题的某种通用的解决方案。 1. 六大设计模式 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。 开放封闭原则:软件实体可以扩展,但是不可修改。即面对需求,对程序的改动可以通过增加代码来完成,但是不能改动现有的代码。 里氏代换原则:一个软件实体如果使用的是一个基
阅读全文
摘要:为什么需要编译:编写好的代码最终翻译为机器可执行的二进制指令,编译的过程如下图所示: 编译预处理:在预编译过程中主要处理源代码中的预处理指令。 引入头文件 #include 条件编译指令:#ifdef, #ifndef, #else, #elif, #endif 条件编译指令 说 明 #if 如果条
阅读全文
摘要:作用域:作用域即一个变量可以被引用的范围,常见的作用域可分为 6 种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 全局变量:具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。其他不包含全局变量定义的源文件需要用 extern 关键字再次声明这个
阅读全文
摘要:在主函数声明全局变量,在外部文件使用全局变量需要extern。函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern。但是引用的时候一样需要声明的。 全局变量在外部使用声明时,extern关键字是必须的,如果变量没有extern修饰且没有显式的初始化,同样成为变量的定义,
阅读全文
摘要:#pragmaonce这个宏作用: 为了避免同一个头文件被包含(include)多次,C/C++中有两种宏实现方式:一种是#ifndef方式;另一种是#pragma once方式。 在能够支持这两种方式的编译器上,二者并没有太大的区别。但两者仍然有一些细微的区别。 #pragma once 一般由编
阅读全文
摘要:C++三种管理数据内存的方式:自动存储,静态存储,动态存储 自动存储:自动变量的持久性为自动的,在程序开始执行其所属的函数后者代码块时创建,执行后释放 静态存储:在程序整个运行期间都存在。(外部链接性,内部链接性,无链接性) 内存泄漏问题:被分配的内存再也不能使用,也无法回收(new和delete使
阅读全文
摘要:1.使用new动态分配内存,如果没有足够内存,则new返回0 2.不要使用delete 释放不是new分配的内存,delete释放指向的内存,但不会删除指针本身。 3.对空指针使用delete是安全的 4.创建数组时候的静态联编与动态联编。 在创建数组时候声明大小,例如int[10],使用new等动
阅读全文
摘要:针对C++数据,可以调用相关函数 ,类似于类调用自己的子函数,value.length(), 函数相关操作: string str1("abcd"); string str2(5, 'a'); //5个a string str2(5,'abc'); //5个c string str3("abcdef
阅读全文