摘要:
问题:类模板中成员函数创建时机是在调用阶段,导致分文件编写时链接不到解决:解决方式1:直接包含.cpp源文件,而不是包含.h文件解决方式2:将声明和实现写到同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制,相当于将.h和.cpp写在一起 只有类模板中会使用.hpp文件 不过这个其 阅读全文
posted @ 2022-05-04 19:25
纸包鱼
阅读(88)
评论(0)
推荐(0)
摘要:
类外实现的时候要说明这是一个模板以及模板的通用变量 template<typename T1 ,typename T2> class person { public: person(T1 name,T2 age); void showperson(); T2 age; T1 name; }; tem 阅读全文
posted @ 2022-05-04 19:15
纸包鱼
阅读(83)
评论(0)
推荐(0)
摘要:
cout需要写在int main里面,而不能在函数外直接写。 错误 class son2 : public base<T1> { public: cout << typeid(T1).name() <<endl; cout << typeid(T2).name() <<endl; T2 obf; } 阅读全文
posted @ 2022-05-04 17:49
纸包鱼
阅读(225)
评论(0)
推荐(0)
摘要:
当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型如果不指定,编译器无法给子类分配内存如果想灵活指定出父类中T的类型,子类也需变为类模板 template<typename T> class base { public: T m; }; class son1 : public 阅读全文
posted @ 2022-05-04 17:48
纸包鱼
阅读(166)
评论(0)
推荐(0)
摘要:
1. 指定传入的类型 直接显示对象的数据类型,最常用的 void printperson1(person<string,int> &p) 2. 参数模板化 将对象中的参数变为模板进行传递 template<typename T1 ,typename T2> void printperson2(per 阅读全文
posted @ 2022-05-04 17:37
纸包鱼
阅读(167)
评论(0)
推荐(0)
摘要:
普通类中的成员函数一开始就可以创建类模板中的成员函数在调用时才创建 模板中的数据类型只有在调用的时候才能确定,之前都是不确定的 阅读全文
posted @ 2022-05-04 17:22
纸包鱼
阅读(49)
评论(0)
推荐(0)
摘要:
1. 类模板没有自动类型推导的使用方式 person<string,int>p1("tom",10);//正确 person p1("tom",10);//错误,他不会自动进行推导 2. 类模板在模板参数列表中可以有默认参数 template<typename NameType ,typename 阅读全文
posted @ 2022-05-04 16:24
纸包鱼
阅读(26)
评论(0)
推荐(0)
摘要:
构建一个通用的类,类中的数据类型不具体制定,用一个虚拟的类型来代表 template <typename T> 类 和函数模板基本一致 template<typename NameType,typename AgeType> class person { public: person(NameTyp 阅读全文
posted @ 2022-05-04 16:19
纸包鱼
阅读(37)
评论(0)
推荐(0)
摘要:
比如数组的比较,就没法通过简单的比对函数进行 这种情况下要进行函数模板的重载,或者进行运算符重载 template<> bool compare (person &a,person &b) 阅读全文
posted @ 2022-05-04 15:53
纸包鱼
阅读(37)
评论(0)
推荐(0)
摘要:
1. 如果函数模板和普通函数都可以实现,优先调用普通函数2. 可以通过空模板参数列表来强制调用函数模板 myPrint<>(a, b)3. 函数模板也可以发生重载4. 如果函数模板可以产生更好的匹配,优先调用函数模板 阅读全文
posted @ 2022-05-04 15:38
纸包鱼
阅读(96)
评论(0)
推荐(0)
摘要:
主要区别在于隐式类型转换 普通函数调用时可以发生自动类型转换(隐式类型转换)函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换如果利用显示指定类型的方式,可以发生隐式类型转换 阅读全文
posted @ 2022-05-04 15:28
纸包鱼
阅读(28)
评论(0)
推荐(0)
摘要:
自动类型推导,必须推导出一致的数据类型T,才可以使用,T不会在一个模板函数调用中代表两个意义模板必须要确定出T的数据类型,才可以使用,也就是说函数模板必须说明或者自动分析出typename模板变量 因为模板不能直接调用 typename可以改成class,两者区别不大,在模板定义的时候可以混用 te 阅读全文
posted @ 2022-05-04 15:04
纸包鱼
阅读(38)
评论(0)
推荐(0)
摘要:
c++模板是通用的模具,用于提高复用性 模板不可以直接使用 这是一种思想,叫做泛式编程,有两种模板,函数模板和类模板 函数模板用于建立一个通用函数,函数返回值和形参类型不具体指定,用一个虚拟类型来表示 函数模板声明template<typename T> template 声明创建模板typenam 阅读全文
posted @ 2022-05-04 14:58
纸包鱼
阅读(76)
评论(0)
推荐(0)

浙公网安备 33010602011771号