四时宝库

程序员的知识宝库

C++基本功 - 模板默认参数怎么写(c++带默认参数的函数)

在 C++ 模板中,可以为模板参数提供默认值,这使得模板在某些情况下使用起来更加灵活。



类模板的默认参数

  • 语法

template
class MyClass {
// ...
};

    • 在这个例子中,T 的默认类型是 intU 的默认类型是 double
  • 使用方式
    • 当你创建 MyClass 的实例时,你可以选择不指定模板参数,这时将使用默认值:

MyClass<> obj1; // T = int, U = double

    • 你也可以只指定部分模板参数:

MyClass obj2; // T = char, U = double

    • 或者指定所有模板参数:

MyClass obj3; // T = char, U = float

  • 注意事项
    • 类模板可以有默认模板参数,但是函数模板在 C++11 之前不可以有默认模板参数。
    • 在模板参数列表中,默认参数必须从右向左设置。也就是说,如果你为一个模板参数设置了默认值,那么它右边的所有模板参数都必须有默认值。

函数模板的默认参数(C++11 及以后)

  • 语法

template
void myFunction(T a, U b) {
// ...
}

    • 与类模板类似,你可以为函数模板的类型参数提供默认值。
  • 使用方式
    • 编译器可以从函数参数推导出模板参数,因此在许多情况下,你不需要显式指定它们。
    • 当函数模板的参数不能被推导出来,或者是你想明确指定的时候,默认模板参数就会很有用。

myFunction(); // T = int, U = double
myFunction(); // T = char, U = double
myFunction(); // T = char, U = float

  • 注意事项
    • C++11 引入了函数模板的默认模板参数。

非类型模板参数的默认值

  • 语法

template
class MyArray {
int data[size];
// ...
};

    • 你也可以为非类型模板参数(例如整数)提供默认值。
  • 使用方式

MyArray<> arr1; // size = 10
MyArray<20> arr2; // size = 20

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接