摘要:
对两个浮点数判断大小和是否相等不能直接用==来判断,会出错!明明相等的两个数比较反而是不相 等!对于两个浮点数比较只能通过相减并与预先设定的精度比较,记得要取绝对值!浮点数与0的比较 也应该注意。与浮点数的表示方式有关。 阅读全文
2021年7月12日
摘要:
指针加减本质是对其所指地址的移动,移动的步长跟指针的类型是有关系的,因此在涉及到指针加减运 算需要十分小心,加多或者减多都会导致指针指向一块未知的内存地址,如果再进行操作就会很危险。 阅读全文
摘要:
生命周期不同:全局变量随主程序创建和创建,随主程序销毁而销毁;局部变量在局部函数内部,甚至 局部循环体等内部存在,退出就不存在; 使用方式不同:通过声明后全局变量在程序的各个部分都可以用到;局部变量分配在堆栈区,只能在局部使用。 操作系统和编译器通过内存分配的位置可以区分两者,全局变量分配在全局数据 阅读全文
摘要:
可以。 引用在创建的时候必须初始化,在访问虚函数时,编译器会根据其所绑定的对象类型决定要调用哪个函数。注意只能调用虚函数。 #include <iostream>using namespace std;class Base{public: virtual void fun() { cout << " 阅读全文
2021年7月11日
摘要:
1.nullptr替代 NULL 2.引入了 auto 和 decltype 这两个关键字实现了类型推导 3.基于范围的 for 循环for(auto& i : res){} 4.类和结构体的中初始化列表 5.Lambda 表达式(匿名函数) 6.std::forward_list(单向链表) 7. 阅读全文
摘要:
1.静态类型:对象在声明时采用的类型,在编译期既已确定; 2.动态类型:通常是指一个指针或引用目前所指对象的类型,是在运行期决定的; 3.静态绑定:绑定的是静态类型,所对应的函数或属性依赖于对象的静态类型,发生在编译期; 4.动态绑定:绑定的是动态类型,所对应的函数或属性依赖于对象的动态类型,发生在 阅读全文
摘要:
由于C++支持多继承,除了public、protected和private三种继承方式外,还支持虚拟(virtual)继承, 举个例子: #include <iostream>using namespace std;class A{}class B : virtual public A{};clas 阅读全文
2021年7月10日
摘要:
1.拷贝构造函数是函数,赋值运算符是运算符重载。 2.拷贝构造函数会生成新的类对象,赋值运算符不能。 3.拷贝构造函数是直接构造一个新的类对象,所以在初始化对象前不需要检查源对象和新建对象是否 相同;赋值运算符需要上述操作并提供两套不同的复制策略,另外赋值运算符中如果原来的对象有 内存分配则需要先把 阅读全文
摘要:
构造函数: 对象不存在,没用别的对象初始化,在创建一个新的对象时调用构造函数 拷贝构造函数: 对象不存在,但是使用别的已经存在的对象来进行初始化 赋值运算符: 对象存在,用别的对象给它赋值,这属于重载“=”号运算符的范畴,“=”号两侧的对象都是已存在的 举个例子: #include <iostrea 阅读全文
摘要:
1.this指针是类的指针,指向对象的首地址。 2.this指针只能在成员函数中使用,在全局函数、静态成员函数中都不能用this。 3.this指针只有在成员函数中才有定义,且存储位置会因编译器不同有不同存储位置。 this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeo 阅读全文