C++面向对象入门(四十一)类模板中使用默认参数
作者:互联网
类模板的默认参数: 包含和通用类型相关的默认参数, 当类模板被实例化时, 如果没有指定其他类型的参数, 则使用默认参数,
函数类型参数也可以给定默认值 定义默认参数语法:
<typename T,.., int|&|* t,.., typename V = defaultType,..., int|&|* v = defaultValue> ---模板参数表
上述模板参数表的后半段 typename V = defaultType,..., int|&|* v = defaultValue
即是默认参数的定义方式 类模板使用默认参数实例化模板类语法:
类模板名<显式指定非默认参数列表(包括函数参数)>
只需显式指定没有默认值的模板参数表中的参数即可, 当模板参数表所有参数都具有默认值时, 如果实例化类模板时, 都使用默认
参数, <>不能省略 注意事项:
1 <>不能省略
2 一个位置使用了默认参数, 其后的所有参数必须使用默认参数(定义类模板时, 也应该在模板参数表中保证第一个使用默认参数的
参数后的所有模板参数均匀默认值) 代码示例:
函数类型参数也可以给定默认值 定义默认参数语法:
<typename T,.., int|&|* t,.., typename V = defaultType,..., int|&|* v = defaultValue> ---模板参数表
上述模板参数表的后半段 typename V = defaultType,..., int|&|* v = defaultValue
即是默认参数的定义方式 类模板使用默认参数实例化模板类语法:
类模板名<显式指定非默认参数列表(包括函数参数)>
只需显式指定没有默认值的模板参数表中的参数即可, 当模板参数表所有参数都具有默认值时, 如果实例化类模板时, 都使用默认
参数, <>不能省略 注意事项:
1 <>不能省略
2 一个位置使用了默认参数, 其后的所有参数必须使用默认参数(定义类模板时, 也应该在模板参数表中保证第一个使用默认参数的
参数后的所有模板参数均匀默认值) 代码示例:
#include <iostream> using namespace std; /* 类模板的默认参数: 包含和通用类型相关的默认参数, 当类模板被实例化时, 如果没有指定其他类型的参数, 则使用默认参数, 函数类型参数也可以给定默认值 定义默认参数语法: <typename T,.., int|&|* t,.., typename V = defaultType,..., int|&|* v = defaultValue> ---模板参数表 上述模板参数表的后半段 typename V = defaultType,..., int|&|* v = defaultValue 即是默认参数的定义方式 类模板使用默认参数实例化模板类语法: 类模板名<显式指定非默认参数列表(包括函数参数)> 只需显式指定没有默认值的模板参数表中的参数即可, 当模板参数表所有参数都具有默认值时, 如果实例化类模板时, 都使用默认 参数, <>不能省略 注意事项: 1 <>不能省略 2 一个位置使用了默认参数, 其后的所有参数必须使用默认参数(定义类模板时, 也应该在模板参数表中保证第一个使用默认参数的 参数后的所有模板参数均匀默认值) */ //使用默认参数 template<typename AType = int, int size = 10> class aType { private: AType arr[size]; public: aType(); aType(AType arr[]); AType &operator[](int n); }; int main() { int intArr[] = { 9,8,6,5,3,2 }; //使用默认参数的类模板实例化类 //<>不能省略, 但是<>里给定任何数据类型 aType<> intArray(intArr); cout << intArray[5] << endl; cout << intArray[-1] << endl; //由于给定数组实际长度和默认参数规定长度不一致, 访问达不到预期效果 cout << intArray[8] << endl; system("pause"); } template<typename AType, int size> aType<AType, size>::aType(AType arr[]) { for (size_t i = 0; i < size; i++) { this->arr[i] = arr[i]; } } template<typename AType, int size> AType &aType<AType, size>::operator[](int n) { if (n < 0 || n >= size) { cout << "数组下标越界, 将返回第一个元素!" << endl; return arr[0]; } return arr[n]; }
标签:参数表,aType,C++,面向对象,四十一,参数,默认,默认值,模板 来源: https://www.cnblogs.com/RGBTH/p/13605557.html