随笔分类 -  C++ 学习笔记

C++ 析构函数
摘要:析构函数 析构函数:是一种特殊的成员函数,没有返回值,不需要程序员显式调用,而是在销毁对象是自动执行。 注意:析构函数没有参数,不能被重载,一个类只有一个析构函数,如果没有定义,编译器会自动生成一个默认的析构函数。 注意:用new分配内存时会调用构造函数,用delete释放内存时会调用析构函数。 析 阅读全文
posted @ 2020-02-22 20:52 xiaobaizzZ 阅读(619) 评论(0) 推荐(0)
C++ 构造函数
摘要:构造函数 构造函数:是一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户显式调用,而是在创建对象时自动执行。 构造函数必须是public属性的,否则创建对象时无法调用。并且构造函数没有返回值。 构造函数的重载 一个类可以有多个重载的构造函数,创建对象时根据传递的实参来判断调用哪一个构造函 阅读全文
posted @ 2020-02-22 20:35 xiaobaizzZ 阅读(215) 评论(0) 推荐(0)
C++ 成员函数的实现
摘要:类是创建对象的模板,不占用内存空间,不存在于编译后的可执行文件中。 对象是实实在在的数据,需要内存来存储,对象被创建时会在栈区或者堆区分配内存。 include include using namespace std; class Student{ private: string m_name; i 阅读全文
posted @ 2020-02-22 20:02 xiaobaizzZ 阅读(2364) 评论(0) 推荐(2)
C++ inline内联函数
摘要:内联函数 函数调用是有时间和空间开销的。程序在执行一个函数之前需要将实参、局部变量、返回地址以及若干寄存器都压入栈中,然后才能执行函数体中的代码;执行完之后,还要将之前压入栈中的数据都出栈,才能接着执行函数调用位置以后的代码。 如果函数体代码比较多,需要较长的执行时间,那么函数调用机制占用的时间可以 阅读全文
posted @ 2020-02-22 15:06 xiaobaizzZ 阅读(302) 评论(0) 推荐(0)
C++ 类和对象
摘要:类只是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。 只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。 栈上创建对象:有名字。 堆上创建对象:没有名字,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变 阅读全文
posted @ 2020-02-21 16:01 xiaobaizzZ 阅读(108) 评论(0) 推荐(0)
C++ 深拷贝和浅拷贝(深复制和浅复制)
摘要:深拷贝+浅拷贝(C++、python) lambda表达式 inline函数 const引用 只能指针 阅读全文
posted @ 2020-02-21 00:32 xiaobaizzZ 阅读(196) 评论(0) 推荐(0)
C++ const关键字
摘要:C++中的const更像编译阶段的 define 变量是要占用内存的,即使被const修饰也不例外。m,n两个变量占用不同的内存,int n = m;表示将m的值赋给n。 在C语言中,编译器会先到m所在的内存取出一份数据,再将这份数据赋给n; 在C++中,编译器会直接将10赋给m,没有读取内存的过程 阅读全文
posted @ 2020-02-21 00:17 xiaobaizzZ 阅读(131) 评论(0) 推荐(0)
C++ 虚函数表
摘要:当通过指针访问类的成员函数时: 如果该函数是非虚函数:编译器会根据指针的类型找到该函数。 如果该函数是虚函数,并且派生类有同名的函数遮蔽它:编译器会根据指针的指向找到该函数,这就是多态。 对象的内存模型是非常干净的,没有包含任何成员函数的信息,编译器究竟是根据什么找到了成员函数呢? 编译器之所以能通 阅读全文
posted @ 2020-02-20 12:03 xiaobaizzZ 阅读(199) 评论(0) 推荐(0)
C++ 纯虚函数 + 抽象类
摘要:纯虚函数:没有函数体,只有函数声明 抽象类:包含纯虚函数的类 之所以说它抽象,是因为它无法实例化,也就是无法创建对象。 纯虚函数没有函数体,不是完整的函数,无法调用,也无法为其分配内存空间。 抽象类通常是作为基类,让派生类去实现纯虚函数,派生类必须实现纯虚函数才能被实例化。 纯虚函数的主要目的: 抽 阅读全文
posted @ 2020-02-20 11:34 xiaobaizzZ 阅读(202) 评论(0) 推荐(0)
C++ 虚析构函数
摘要:构造函数不能是虚函数 因为派生类不能继承基类的构造函数,将构造函数声明为虚函数没有意义。 构造函数用于在创建对象时进行初始化工作,在执行构造函数之前对象尚未创建完成,虚函数表尚不存在,也没有指向虚函数表的指针,所以此时无法查询虚函数表,也就不知道要调用哪一个构造函数。 析构函数用于在销毁对象时进行清 阅读全文
posted @ 2020-02-20 11:15 xiaobaizzZ 阅读(432) 评论(0) 推荐(0)
C++ 虚函数
摘要:虚函数注意事项 只需在虚函数的声明处加上virtual关键字,函数定义处可以加也可以不加 可以只将基类中的函数声明为虚函数,这样派生类中具有遮蔽关系的同名函数都将自动成为虚函数。 当基类中定义了虚函数,如果派生类没有定义新的函数来遮蔽此函数,那么将使用基类的虚函数。 构造函数不能是虚函数。对于基类的 阅读全文
posted @ 2020-02-19 23:59 xiaobaizzZ 阅读(273) 评论(0) 推荐(0)
C++ 多态
摘要:封装 可读性 继承 可扩充性 多态 可重用性 多态:指同一名字的事物可以完成不同的功能。 编译时的多态:主要指函数的重载(包括运算符的重载)、对重载函数的调用,在编译时就能根据实参确定应该调用哪个函数,因此叫编译时的多态; 运行时的多态:和继承和虚函数有关。 发现:当基类指针p指向派生类Teache 阅读全文
posted @ 2020-02-19 23:44 xiaobaizzZ 阅读(161) 评论(0) 推荐(0)
C++ this指针
摘要:this是C++中的一个关键字,也是一个 const指针 ,它指向当前对象,通过它可以访问当前对象的所有成员。 所谓当前对象,就是正在使用的对象。例如对于stu.show(),stu就是当前对象,this就指向stu。 this只能用在类的内部,通过this可以访问类的所有成员,包括private、 阅读全文
posted @ 2020-01-09 16:13 xiaobaizzZ 阅读(201) 评论(0) 推荐(0)
C++ 函数指针(指向函数的指针)
摘要:函数指针 一个函数总是占用一段连续的内存区域,函数名在表达式中有时会被转换成该函数所在区域的首地址,这和数组名非常类似。 我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。 函数的类型由它的返回类型和形参类型共同决定 阅读全文
posted @ 2020-01-09 01:39 xiaobaizzZ 阅读(4370) 评论(0) 推荐(0)
C++中的四个智能指针
摘要:只能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象。智能指针定义在memory头文件中。 1. auto_ptr(C++11已经舍弃) 由new expression获得的对象,在auto_ptr对象销毁时,他所管理的对象也会自动被delete掉。 上述语句中,如果p1和p2是常规指 阅读全文
posted @ 2020-01-08 16:33 xiaobaizzZ 阅读(1146) 评论(0) 推荐(1)
static关键字的作用
摘要:static关键字的作用:用来控制变量的存储方式和可见性。 1. 全局静态变量 静态变量都在全局数据区分配内存,包括局部静态变量。 未经初始化的全局静态变量会被程序自动初始化为0。(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0) 全局静态变量 阅读全文
posted @ 2020-01-03 15:13 xiaobaizzZ 阅读(364) 评论(0) 推荐(0)