9.Special member 一、C++特殊成员函数简介 C++自动为类生成的特殊成员函数包括: 默认构造函数:无参数创建对象。 拷贝构造函数:以另一个现有对象为模板创建新对象。 拷贝赋值操作符:用另一个现有对象替换现有对象的内容。 析构函数:对象离开作用域时被销毁。 1.1 函数调用示例 在以下示例中,每行代码调用的特殊成员函数是: 1234567891011MyVector<int> function( 2024-02-12 C++ #C++ #Copy constructor #Copy assignment
8.Template Class 一、类模板简介 类模板提供了定义泛型类的方法,使得类能够处理不同的数据类型。这增强了代码的复用性和灵活性。 1.1 基本定义 类模板使用template关键字定义,后跟模板参数列表。这些参数可以使用typename或class关键字声明。 123456789template <typename T1, typename T2>class MyPair {public: 2024-02-12 C++ #C++ #Template Class
7.Operator Overloading 一、左值&右值 左值是可以标识的、具有地址的表达式或变量。左值通常代表着一个具体的内存位置,因此可以在赋值操作的左侧使用。 右值是临时的、不可标识的表达式或值。右值通常代表计算的结果或临时对象,只能出现在赋值操作的右侧。 在重载操作符时,尤其需要注意返回值是左值还是右值,例如: 默认情况下,+操作符返回一个右值,因此(x + y) = 5;的写法就是非法的。 myArray[5] = 2024-02-11 C++ #C++ #Operator #Overloading #Left Value #Right Value #Conversion Operator
6.Introduction to Class 一、Classes简介 头文件(.h)VS 源码(.cpp) 构造函数 析构函数 操作符重载 const 1.1 头文件(.h) 1.2 源码(.cpp, .cc, etc.) 1.3 构造函数 构造函数可分为带参数和不带参数两种类型,其调用方式示例如下: 12FMRadio myRadio(88.5, 5); // 使用带参数的构造函数创建对象FMRadio myRadio; 2024-02-08 C++ #C++ #Class #Const #Static #Cast #Initialization
5.Functions and Algorithms 概念提升 在上个笔记中,countOccurences函数还有最后一个问题没有解决:统计向量后半部分中最多有多少元素小于或等于5。这一问题可以使用谓词函数来解决。 谓词函数是一种特殊类型的函数,它接受一定数量的参数,并基于这些参数返回一个布尔值。这种函数特别适用于算法中的条件判断,能够增加代码的可复用性和灵活性。 示例:谓词函数的类型 单参数谓词(Unary Predicate):接受单一参数, 2024-02-06 C++ #C++ #Functions #Algorithms
4.Template Function 模板函数 一个通用的比较大小的函数: 调用这一函数: 模板的显式实例化 隐式实例化 概念提升 在写模板函数时往往会对模板参数做出一定的假设,这些假设限制了所编写的模板函数的通用性。 尝试解除这些假设的限制,使得编写的模板的函数更通用。例如,对于countOccurences函数而言,能否解决以下问题: 以下展示逐渐放松countOccurences函数参数限制的过程: 1234 2024-02-05 C++ #C++ #Templates #Function Template #SFINE
3.STL Associative Containers and Iterators Associative Containers 没有顺序的概念 使用key而非index访问数据。 包括以下四种: std::map<T1,T2> std::set<T> std::unordered_map<T1,T2> std::unordered_set<T> 其中,std::map<T1,T2>和std::set<T& 2024-02-03 C++ #C++ #STL #Map #Set #Multimap #Multiset #Iterator
2.STL Sequence Containers vector 初始化 12345678vector<int> myVector(15); //初始大小为15,其中值均为0vector<string> myStringVector(10); //初始大小为10,其中均为空字符串vector<double> myReals(20, 137.0); //初始大小为20,值均为137.0vector< 2024-02-02 C++ #C++ #STL #Vector #Deque
1.Streams cin,cout 何时提示用户输入? 当位置指针达到文件结尾(EOF)并且超过了缓冲区中的最后一个标记时,程序会挂起并等待用户输入。 为什么 cout 操作不会立即将输出打印到控制台?输出什么时候才会被打印? 因为 cout 的输出只是输出到了缓冲区,需要对缓冲区进行刷新才会打印到控制台。 输出刷新的三种情况: 使用 cout << endl; 使用 cout << f 2024-02-02 C++ #C++ #Streams #C++ I/O