
C++prinmer
文章平均质量分 68
Turing_Sunshine
这个作者很懒,什么都没留下…
展开
-
C++primer 阅读笔记-模板与泛型编程(类模板)
类模板类模板是用来生成类的蓝图与函数模板不同的是,编译器能为类模板推断模板参数类型,所以在使用类模板时,需要在模板名后的尖括号里提供额外的信息,用来补充类模板的实参类似函数模板,类模板以关键字template开始,后跟模板参数列表,在类模板或者其成员的定义中,用模板参数当作替身template<typename T> class Blob{public: typedef T val原创 2015-09-02 16:35:05 · 560 阅读 · 0 评论 -
C++primer阅读笔记-模板与泛型编程(可变参数模板)
一个可变参数模板就是一个接受可变数目参数的模板函数或模板类存在两种参数包 模板参数包函数参数包用省略号指出一个模板参数胡函数参数表示一个包class…或者typename…指出接下来的参数表示零个或多个类型的列表一个类型名后跟一个省略号表示零个或多个给定类型的非(模板)类型参数列表在函数参数列表中,如果一个参数的类型那个是一个模板参数包,那么此参数是一个函数参数包template<t原创 2015-09-07 14:37:15 · 533 阅读 · 0 评论 -
C++primer阅读笔记-模板与泛型编程(重载与模板)
函数模板可以被另一个模板或者一个非模板函数重载,名字相同的函数必须具有不同数量或类型的参数。设计到函数模板,函数匹配规则满足: 对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例候选函数总是可行的,因为模板实参推断会排出任何不可行的模板可行函数按照类型转换来排序如果恰有一个函数提供比其他函数都更好的匹配,则选择此函数,如果有多个函数提供同样好的匹配,则:如果同样好的函数中只有原创 2015-09-07 11:10:09 · 667 阅读 · 0 评论 -
C++primer阅读笔记-模板与泛型编程(模板特例化)
默写情况下,通用定义可能编译失败或做得不对当我们不能使用模板版本时,我们可以定义类或函数模板的一个特例化考虑下边代码//可以比较任意两个类型,实参为一个指向T类型的const版本的引用template<typename T>int compare(const T&,const T&);template<size_t N,size_t M>//处理字符窜字面常量int com[are(c原创 2015-09-07 15:38:08 · 908 阅读 · 0 评论 -
C++primer阅读笔记-重载运算与类型转换(可调用对象与function)
C++中的可调用对象: 函数函数指针lambda表达式bind创建的对象重载了函数调用运算符的类每个可调用对象都有自己的类型: lambda有唯一的类类型(未命名的)函数和函数指针的类型以及传递给调用的实参类型每个可调用对象都有自己的调用形式 调用形式指明调用返回类型以及传递给调用的实参类型两个不同的类型的可调用对象的调用形式可能相同一种调用形式对应一个函数类型标准库fun原创 2015-09-05 12:45:58 · 291 阅读 · 0 评论 -
C++primer阅读笔记-模板与泛型编程(模板实参推断)
类型转换与模板类型参数编译器利用调用中的函数实参来确定其模板参数如果一个函数uxingcan的类型使用了模板类型参数,则采用特殊初始化规则编译器通常不是对实参进行类型转换,而是生成一个新的模板实例顶层const无论是在形参还是实参都会被葫芦其他类型转换中,能在调用中应用与函数模板的包括 const转换:可以将一个非const的引用或指针传递给一个const的引用或指针形参数组或函数指针原创 2015-09-06 11:11:33 · 660 阅读 · 0 评论 -
C++primer 阅读笔记-模板与泛型编程(成员模板)
成员模板一个类(类模板或者普通类)可以包含本身是模板的成员函数成员模板不能是虚函数普通类的成员模板下例为一个类似于unique_ptr的默认删除器的类希望删除器适用于任何类型,所以将调用运算符定义为一个模板成员模板也是也模板参数列表开始class DebugDelete{ public: DebugDelete(std::ostream &s = std::er原创 2015-09-02 18:58:51 · 481 阅读 · 0 评论 -
C++primer 阅读笔记-模板与泛型编程(控制实例化)
模板在使用时才会被实例化,相同的实例可能出现在对各对象文件中当多个独立编译的源文件使用了相同的模板,并提供了相同的参数。那么每个文件都会有该模板的一个实例,在大系统中,这会增加额外开销通过显示实例化,避免这种开销//实例化声明与定义extern template class Blob<string> //声明template int compare(const int&, const in原创 2015-09-03 10:30:17 · 463 阅读 · 0 评论 -
C++primer 阅读笔记-模板与泛型编程(函数模板)
面向对象编程(OOP)和泛型编程都能处理在编写程序时不知道类型的情况,但是OOP能处理类型在程序运行之前都不知道的情况,而泛型编程在编译时就能获知类型了。 一个模板就是一个创建类或者函数的蓝图或者说公式,但使用一个泛型类型或者泛型函数时,我们将蓝图转换为特定的类或者函数,这种转换发生在编译的时候。定义模板函数模板一个函数模板就是一个公式,用来生成针对特定类型的函数版本。模板以关键字templ原创 2015-09-01 10:38:16 · 499 阅读 · 0 评论 -
C++primer 阅读笔记-模板与泛型编程(模板参数)
模板参数模板参数与作用域模板参数会隐藏外层作用域中声明的相同名字在模板内不能重用模板参数名一个模板参数名在一个特定的模板参数列表中只能出现一次模板声明模板声明必须包括模板参数列表模板声明中模板参数的名字不必与定义中的相同使用类的类型成员C++假定通过作用域运算符访问的名字不是类型关键字typename显示告诉编译器该名字是类型templateT>原创 2015-09-02 16:55:21 · 573 阅读 · 0 评论 -
C++primer 阅读笔记-模板与泛型编程(效率与灵活性+)
shared_ptr给予我们共享指针所有权的能力容易重载shared_ptr的删除器,只要在创建时或者reset指针时传递给它一个可调用对象即可unique_ptr独占指针删除器是unique_ptr对象的类型的一部分,用户定义unique_ptr时以显式模板实参的形式提供删除器的类型在运行时绑定删除器shared_ptr必须能直接访问删除器,删除器保存为一个指针或者一个封装了指针的类s原创 2015-09-08 18:53:41 · 602 阅读 · 0 评论