摘要: 先看几个常规的初始化: 以上都为常规初始化,即调用类的构造函数进行初始化。 initialization list,即用初始化列表进行初始化,打破了原有的初始化格局,令初始化更加直观: 这种方式的构造大体如下: 阅读全文
posted @ 2022-01-23 12:40 sunshine_gzw 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 对于一个给定的序列,如果按照常规遍历每个元素: 或者: 有了for语句,可以使之变得简单: 再比如L: 阅读全文
posted @ 2022-01-23 12:14 sunshine_gzw 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 在C++中,有四类特殊的成员函数,分别为:默认构造函数,默认析构函数,默认拷贝构造函数,默认赋值运算符。他们的作用为创建、初始化、销毁、拷贝对象。 虽然在类A中什么都没有定义,但是编译会通得过,因为编译器会认为有必要,于是会为我们默认创建。 如果我不想要编译器为我们创建,于是可以=delete函数, 阅读全文
posted @ 2022-01-23 11:34 sunshine_gzw 阅读(78) 评论(0) 推荐(0) 编辑
摘要: final主要有两个功能: 1.阻止子类的继承。 2.阻止虚函数的覆写。 阅读全文
posted @ 2022-01-23 11:10 sunshine_gzw 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 对于一个含有虚函数的父类,子类继承并覆写了父类的虚函数,一个好的编译器可能会有提示功能,比如: 上面的mouseMoveEvent是斜体,表明要覆写父类的虚函数,但是如果其中的名字不小心写错了,编译器没有能够给出斜体的提示,此时override的作用便派上用场了,他的作用就是告诉编译器我这个函数是要 阅读全文
posted @ 2022-01-23 11:01 sunshine_gzw 阅读(177) 评论(0) 推荐(0) 编辑
摘要: #include <iostream> using namespace std; void f(int) { cout<<"f(int)"<<endl; } void f(bool) { cout<<"f(bool)"<<endl; } void f(void*) { cout<<"f(void*) 阅读全文
posted @ 2022-01-23 10:40 sunshine_gzw 阅读(92) 评论(0) 推荐(0) 编辑