中心主题
模板:1模板就是一个通用的模具,主要是大大提高代码的复用性 2 C++的另外一种编程思想,泛型编程,主要利用的技术就是模板 3 C++主要提供了两种模板机制:函数模板和类模板
模板的特点 1模板是通用的,但不是万能的。 2 模板不能直接拿来使用,只是一个大致框架
函数模板:就是建立一个通用的函数,及函数返回值、参数类型不具体指定,用一个虚拟类型来替代。 格式 template <typename T>或者template<class T> template ------> 创建模板的关键字,表示开始创建模板 typename ------> 后面的名字,表示虚拟类型的名字,可以以其他字符代替。typename可以用class 替代
子主题 4
类模板 概念: 就是建立一个通用的类,其类的数据成员的类型、成员函数形参的类型不具体指定,用虚拟类型来代替 关键字: template ----->创建模板的关键字,表示开始创建模板。 typename------> 后面的名字,表示虚拟类型的名字,可以用其他字符替代,typename 关键字可以用class替代 注意::使用类模板时需要表明依赖模板的参数数据类型
模板:1模板就是一个通用的模具,主要是大大提高代码的复用性 2 C++的另外一种编程思想,泛型编程,主要利用的技术就是模板 3 C++主要提供了两种模板机制:函数模板和类模板
模板的特点 1模板是通用的,但不是万能的。 2 模板不能直接拿来使用,只是一个大致框架
函数模板:就是建立一个通用的函数,及函数返回值、参数类型不具体指定,用一个虚拟类型来替代。 格式 template <typename T>或者template<class T> template ------> 创建模板的关键字,表示开始创建模板 typename ------> 后面的名字,表示虚拟类型的名字,可以以其他字符代替。typename可以用class 替代
子主题 4
类模板 概念: 就是建立一个通用的类,其类的数据成员的类型、成员函数形参的类型不具体指定,用虚拟类型来代替 关键字: template ----->创建模板的关键字,表示开始创建模板。 typename------> 后面的名字,表示虚拟类型的名字,可以用其他字符替代,typename 关键字可以用class替代 注意::使用类模板时需要表明依赖模板的参数数据类型
模板:1模板就是一个通用的模具,主要是大大提高代码的复用性 2 C++的另外一种编程思想,泛型编程,主要利用的技术就是模板 3 C++主要提供了两种模板机制:函数模板和类模板
模板的特点 1模板是通用的,但不是万能的。 2 模板不能直接拿来使用,只是一个大致框架
函数模板:就是建立一个通用的函数,及函数返回值、参数类型不具体指定,用一个虚拟类型来替代。 格式 template <typename T>或者template<class T> template ------> 创建模板的关键字,表示开始创建模板 typename ------> 后面的名字,表示虚拟类型的名字,可以以其他字符代替。typename可以用class 替代
子主题 4
类模板 概念: 就是建立一个通用的类,其类的数据成员的类型、成员函数形参的类型不具体指定,用虚拟类型来代替 关键字: template ----->创建模板的关键字,表示开始创建模板。 typename------> 后面的名字,表示虚拟类型的名字,可以用其他字符替代,typename 关键字可以用class替代 注意::使用类模板时需要表明依赖模板的参数数据类型
auto :自动类型推导
用途: 1> auto用在修饰数据类型比较冗长的数据类型 2>auto用在 以来模板参数的类型 3>auto用在lambda表达式
auto :自动类型推导
用途: 1> auto用在修饰数据类型比较冗长的数据类型 2>auto用在 以来模板参数的类型 3>auto用在lambda表达式
auto :自动类型推导
用途: 1> auto用在修饰数据类型比较冗长的数据类型 2>auto用在 以来模板参数的类型 3>auto用在lambda表达式
lambda表达式
概念:当需要一个临时的,匿名的、可以捕获外界变量的函数时,可以用lambda表达式完成
捕获外界变量的方式; 值捕获、引用捕获 值捕获:捕获的变量和外界变量不是同一个变量,仅仅只是值相同,并且不能修改,若想对值进行修改,需要加上关键字mutable。 [=]表示对外界所有的变量进行捕获。捕获的变量和外界变量不是同一个变量,但是值相同。 引用捕获 捕获到的变量和外界变量是同一个变量,值和地址都相同,并且可以修改,修改不需要关键字,直接修改就可以。 [&]表示对外界所有的变量进行捕获,捕获到的变量和外界变量是同一个变量,值和地址可以直接修改,不需要借助关键字。
lambda表达式
概念:当需要一个临时的,匿名的、可以捕获外界变量的函数时,可以用lambda表达式完成
捕获外界变量的方式; 值捕获、引用捕获 值捕获:捕获的变量和外界变量不是同一个变量,仅仅只是值相同,并且不能修改,若想对值进行修改,需要加上关键字mutable。 [=]表示对外界所有的变量进行捕获。捕获的变量和外界变量不是同一个变量,但是值相同。 引用捕获 捕获到的变量和外界变量是同一个变量,值和地址都相同,并且可以修改,修改不需要关键字,直接修改就可以。 [&]表示对外界所有的变量进行捕获,捕获到的变量和外界变量是同一个变量,值和地址可以直接修改,不需要借助关键字。
lambda表达式
概念:当需要一个临时的,匿名的、可以捕获外界变量的函数时,可以用lambda表达式完成
捕获外界变量的方式; 值捕获、引用捕获 值捕获:捕获的变量和外界变量不是同一个变量,仅仅只是值相同,并且不能修改,若想对值进行修改,需要加上关键字mutable。 [=]表示对外界所有的变量进行捕获。捕获的变量和外界变量不是同一个变量,但是值相同。 引用捕获 捕获到的变量和外界变量是同一个变量,值和地址都相同,并且可以修改,修改不需要关键字,直接修改就可以。 [&]表示对外界所有的变量进行捕获,捕获到的变量和外界变量是同一个变量,值和地址可以直接修改,不需要借助关键字。
C++中的数据类型转换 概念:C++中存在多种数据类型的转换方式,用于在不同数据类型之间进行转换。
隐士类型转换(自动类型转换)例如:将较小类型的整数转换为较大的整数类型,如将int 转换为double
显示类型转换(强制类型转换)这种类型转换会导致数据据的截断或者精度丢失,因此要小心使用
强制类型和转换又分为静态转换和动态转换 静态转换:(static_cast) 用于基本数据类型之间的转换 以及父类指针/引用转换为子类指针/引用 还可以应用于不同类型的指针之间的转换
动态转换 (dynamic_cast) 通常用于多态类之间的指针或引用类型转,确保类型安全,在运行时进行类型检查,只能用于具有虚函数的类之间的转换。
常量转换 (const _cast) 用于添加或移除 指针或引用的常变量。它可以用来去除const 限定符,但要注意潜在的未定义行为
C风格类型转换;与C语言中的类型转换方式相似,包括以下几种 c样式转换:使用强制类型转换操作符进行转换,类似C语言中的类型转换 函数样式转换(函数式转换):使用C++中的类型转换函数进行转换
注意: 需要注意的是,尽管C++提供了多种类型转换但应该谨慎使用以避免潜在的错误和问题/特别是在使用强制类型转换时,无比确保转换操作是安全的,以避免不必要的问题。
C++中的数据类型转换 概念:C++中存在多种数据类型的转换方式,用于在不同数据类型之间进行转换。
隐士类型转换(自动类型转换)例如:将较小类型的整数转换为较大的整数类型,如将int 转换为double
显示类型转换(强制类型转换)这种类型转换会导致数据据的截断或者精度丢失,因此要小心使用
强制类型和转换又分为静态转换和动态转换 静态转换:(static_cast) 用于基本数据类型之间的转换 以及父类指针/引用转换为子类指针/引用 还可以应用于不同类型的指针之间的转换
动态转换 (dynamic_cast) 通常用于多态类之间的指针或引用类型转,确保类型安全,在运行时进行类型检查,只能用于具有虚函数的类之间的转换。
常量转换 (const _cast) 用于添加或移除 指针或引用的常变量。它可以用来去除const 限定符,但要注意潜在的未定义行为
C风格类型转换;与C语言中的类型转换方式相似,包括以下几种 c样式转换:使用强制类型转换操作符进行转换,类似C语言中的类型转换 函数样式转换(函数式转换):使用C++中的类型转换函数进行转换
注意: 需要注意的是,尽管C++提供了多种类型转换但应该谨慎使用以避免潜在的错误和问题/特别是在使用强制类型转换时,无比确保转换操作是安全的,以避免不必要的问题。
C++中的数据类型转换 概念:C++中存在多种数据类型的转换方式,用于在不同数据类型之间进行转换。
隐士类型转换(自动类型转换)例如:将较小类型的整数转换为较大的整数类型,如将int 转换为double
显示类型转换(强制类型转换)这种类型转换会导致数据据的截断或者精度丢失,因此要小心使用
强制类型和转换又分为静态转换和动态转换 静态转换:(static_cast) 用于基本数据类型之间的转换 以及父类指针/引用转换为子类指针/引用 还可以应用于不同类型的指针之间的转换
动态转换 (dynamic_cast) 通常用于多态类之间的指针或引用类型转,确保类型安全,在运行时进行类型检查,只能用于具有虚函数的类之间的转换。
常量转换 (const _cast) 用于添加或移除 指针或引用的常变量。它可以用来去除const 限定符,但要注意潜在的未定义行为
C风格类型转换;与C语言中的类型转换方式相似,包括以下几种 c样式转换:使用强制类型转换操作符进行转换,类似C语言中的类型转换 函数样式转换(函数式转换):使用C++中的类型转换函数进行转换
注意: 需要注意的是,尽管C++提供了多种类型转换但应该谨慎使用以避免潜在的错误和问题/特别是在使用强制类型转换时,无比确保转换操作是安全的,以避免不必要的问题。
异常的处理 throw--->将已经发生异常的地方进行抛出 catch ------>捕获异常,进行相关处理 try -----> 将可能发生异常的地方,使用try进行包裹
异常的处理 throw--->将已经发生异常的地方进行抛出 catch ------>捕获异常,进行相关处理 try -----> 将可能发生异常的地方,使用try进行包裹
异常的处理 throw--->将已经发生异常的地方进行抛出 catch ------>捕获异常,进行相关处理 try -----> 将可能发生异常的地方,使用try进行包裹
C++的标准模板库(STL:Standard Template Library) 组成: 容器 、算法、迭代器 容器:存储数据 算法:解决问题的(例如:增删改查) 迭代器:是算法和容器的粘合剂。 在代码当中以指针形式出现
vector容器 vector就是数组,和普通数组的区别在于,普通数组是静态空间,二vector是动态空间的。 动态拓展:不是在原来的基础上续借新的空间,而是重新申请一片新的空间,将原来的空间里的数据复制到新申请的空间中,在释放原来的空间。 需要包含头文件 #include <vector>
vector的构造函数 vector<T>v; //无参构造 vector(const vector &v); //拷贝构造 vector(v.begin(),v,end()); //将一个对象的区间[v.begin(),v.end()]构造该对象
C++的标准模板库(STL:Standard Template Library) 组成: 容器 、算法、迭代器 容器:存储数据 算法:解决问题的(例如:增删改查) 迭代器:是算法和容器的粘合剂。 在代码当中以指针形式出现
vector容器 vector就是数组,和普通数组的区别在于,普通数组是静态空间,二vector是动态空间的。 动态拓展:不是在原来的基础上续借新的空间,而是重新申请一片新的空间,将原来的空间里的数据复制到新申请的空间中,在释放原来的空间。 需要包含头文件 #include <vector>
vector的构造函数 vector<T>v; //无参构造 vector(const vector &v); //拷贝构造 vector(v.begin(),v,end()); //将一个对象的区间[v.begin(),v.end()]构造该对象
C++的标准模板库(STL:Standard Template Library) 组成: 容器 、算法、迭代器 容器:存储数据 算法:解决问题的(例如:增删改查) 迭代器:是算法和容器的粘合剂。 在代码当中以指针形式出现
vector容器 vector就是数组,和普通数组的区别在于,普通数组是静态空间,二vector是动态空间的。 动态拓展:不是在原来的基础上续借新的空间,而是重新申请一片新的空间,将原来的空间里的数据复制到新申请的空间中,在释放原来的空间。 需要包含头文件 #include <vector>
vector的构造函数 vector<T>v; //无参构造 vector(const vector &v); //拷贝构造 vector(v.begin(),v,end()); //将一个对象的区间[v.begin(),v.end()]构造该对象