随笔分类 - C++学习
C++学习之路
Volatile的使用
摘要:提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据, 如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。 需要注意的是,没有volati
阅读全文
隐式接口和显式接口
摘要:隐式接口:隐式实现接口时,接口和类(实现接口的类)都可以访问类中的方法 显示接口:只有通过接口来访问类中的方法 举例:定义一个接口 public Interface ICategory { string Name(); } 隐式实现 public class Category:ICategory {
阅读全文
函数调用框架
摘要:当编译器为函数调用产生代码时,它首先把所有的参数压栈,然后调用函数,在函数内部产生代码,向下移动指针为函数局部变量提供 存储单元(这里的向下是相对的,在压栈时,机器的栈指针可能增加也可能减少),但是在汇编语言CALL中,CPU把程序代码中的函数调 用指令的地址压栈,所以汇编语言RETURN可以使用这
阅读全文
友元
摘要:定义:形如friend func1();使普通函数能够访问类的友元,实现位置可以在类外或类中,实现代码与普通函数相同,友元关系不能被继承,是单向,不具有交换性, 在实现类之间数据共享时减少系统开销,提高效率等 优点:能够提高效率,表达简单,清晰 缺点:友元破坏了封装机制,尽量不使用友元 声明:放在类
阅读全文
new 和 delete
摘要:new 和 delete 众所周知,C中的malloc和free是用来申请和释放内存的,相应的C++中也有对应的申请和释放内存的操作,即是new和delete,但是C++的new和delete比C中的malloc和free要好得多, C++把创建一个对象所需的所有动作都结合在一个称为new的运算符里
阅读全文
C++内存管理
摘要:内存管理的开销 当在栈里自动创建对象时,对象的大小和它们的生存期被准确地内置在生成的代码里,这是因为编译器知道确切的类型,数量和范围,而在堆里创建对象还包括另外的时间和空间的开销,例如使用new创建 对象,此时会调用malloc来从堆里申请一块内存,从堆里搜索一块足够大的内存来满足请求,这可以通过检
阅读全文
函数返回值
摘要:对于无返回值函数,那么在其语句的结尾可以没有显式的return语句,因为在最后一句会隐式的执行return; 对于有返回值函数,那么函数必须保证返回一个与函数类型一致的值,或者可以隐式转换成函数类型的,否则编译器将报错 返回一个值的方式和初始化一个值的方式完全一样,返回的值用于初始化调用点的一个临时
阅读全文
C++ 四种新式类型转换
摘要:static_cast ,dynamic_cast,const_cast,reinterpret_cast static_cast 定义:通俗的说就是静态显式转换,用于基本的数据类型转换,及指针之间的转换,当需要把一个较大的算术类型赋值给较小的类型时,这个转换非常有用,任何具有明确定义的类型转换,只
阅读全文
构造&析构
摘要:构造&析构函数 构造函数 定义:与类同名,可以有参可以无参,主要功能用于在类的对象创建时定义初始化的状态,无返回值,也不能用void修饰,构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用 一个类若是只定义了私有的构造函数,将无法通过new关键字来创建其对象,若是没有定义,那么编译
阅读全文
const 内联 枚举 宏
摘要:const 常量 程序运行时在常量表中,系统为它分配内存,在堆栈分配了空间;const常量有数据类型;语句末有分号;有类型检查;可以限制范围 //将所有不希望改变的变量加const修饰 const int a = 1;在类中定义并初始化const变量是不合法的 static QString CC_V
阅读全文
指针与引用
摘要:1. 指针 (1) 指针是一个变量(实体),存储的是一个地址,指向内存的一个存储单元,指针可以为空 (2) 指针可以为空,在声明定义时可以不初始化 (3) 指针在初始化之后可以重新指向其他的存储单元 (4) 指针可以有多级 (5) 指针使用时需要解引用 (6) sizeof指针得到的是指针本身大小(
阅读全文
C++三大特性 封装 继承 多态
摘要:C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对象的使用者和设计者分开, 以提高软件的可维护性和可修改性 特性:1. 结合性,即是将属性和方法结合
阅读全文
浙公网安备 33010602011771号