摘要:
这三个函数如果没有自定义,系统会自动生成一个默认的。都没有返回值。 析构函数可以重载。拷贝构造函数、析构函数不可以被重载。析构函数无参数。 拷贝构造函数在直接初始化、或复制初始化实例化对象时自动调用。 析构函数在对象销毁时自动调用。 【参考】 https://www.imooc.com/video/ 阅读全文
摘要:
字不如图,图不如视频 https://www.imooc.com/video/8135 初始化列表可以让类的属性带上默认值。 初始化列表只能用于构造函数,即类在实例化时会调用自己的构造函数,初始化列表先于构造函数执行,这样对象在创建的时候就有了带默认值的属性。 格式如下图红色部分:赋值必须在()内。 阅读全文
摘要:
std::array 除了有传统数组支持随机访问、效率高、存储大小固定等特点外,还支持迭代器访问、获取容量、获得原始指针等高级功能。而且它还不会退化成指针T *给开发人员造成困惑。 std::vector 向量容器,尾部单端扩容(容量不够,2倍扩容),所以只有push_back,没有push_fro 阅读全文
摘要:
定义时,带默认值的参数应后置 调用时,实参应前置 //void t1(int x, int y = 0, int z); //错误 void t2(int x, int y, int z = 0); void t3(int x = 0, int y = 0, int z = 0); //t3( , 阅读全文
摘要:
:: 一元作用域解析运算符,局部变量与全局变量同名时,可以用来访问全局变量。 #include<iostream> using namespace std; int i{ 10 }; int main() { int i{ 11 }; cout << i << endl; //11 cout << 阅读全文
摘要:
宏定义:其实就是替换作用 #define TRUE 1 //结尾无分号,宏名TRUE,计算机会把所有TRUE替换为1. typedef:定义类的别名 tpyedef unsigned int UInt; //unsigned int类的别名UInt C++11中,用using来定义类的别名: usi 阅读全文
摘要:
*之前是指针指向的目标,*之后是指针本身的属性(即地址是否可变) const int* ptr1; // (1.) pointer to const int int const * ptr2; // (2.) same as 1. int* const ptr3; // (3.) const poi 阅读全文
摘要:
堆:由程序员分配、释放(new、delete)。推荐new出的内存,手动delete释放掉。 栈:编译器自动分配、释放。 全局/静态 区:全局变量、静态变量都在此区 常量区:常量在此区域,内容不可修改。该区只读不可写。如字面量 指针delete释放后,需要指向空地址。 阅读全文
摘要:
类型 变量名 { }; 或者 类型 变量名 = { }; 使用List Initialization (列表初始化)的好处,高精度变低精度,会提示错误。 int x1{ 1.123 };//提示错误 //int x1 = 1.123;//不提示错误,x1=1 常见类型写法如下: int x{};// 阅读全文
摘要:
注意只能有一个cpp定义这个变量。其它cpp直接用。extern可以实现多个cpp控制同一变量(声明不开辟内存,定义开辟内存,所以指向同一内存) file1.cpp #include<iostream> using namespace std; extern int i;//先声明,再使用。i的具体 阅读全文