`

非类型模板参数

 
阅读更多
#include<iostream>
#include<vector>
#include<list>
template<typename T, int MAXSIZE>
class MyContainer {
	public:
		MyContainer(){
			std::cout<<MAXSIZE<<std::endl;
		}
		int capacity() const {
			return MAXSIZE;
		}

	private:
		T elements[MAXSIZE];
};
//  和普通类型模板一样,非类型模板参数也可以有缺省值,如:
template<typename T, int MAXSIZE = 10>
class MyContainer2 {
	public:
		MyContainer2(){
			std::cout<<MAXSIZE<<std::endl;
		}
		int capacity() const {
			return MAXSIZE;
		}

	private:
		T elements[MAXSIZE];
};
int main() {
	MyContainer<int,50> c1;
	MyContainer2<int> c2;
	
	return 0;
}



分享到:
评论

相关推荐

    c++模板教材

    2. 非类型模板参数的限制:非类型模板参数必须是整型、指针或枚举类型,且在模板实例化时必须是常量表达式。 3. 模板的展开与实例化:编译器如何处理模板并生成实例化的代码,以及模板的深度和宽度限制。 4. 模板...

    STL模板知识点笔记

    这意味着在模板内部,非类型模板参数一旦被声明,其值就不能被改变。 #### 函数模板与类型推断 函数模板允许创建依赖于类型参数的函数。在调用模板函数时,函数参数的类型决定了使用模板的哪个版本,即模板的参数...

    C++模板的实现

    1. **非类型模板参数**:除了类型参数,函数模板还可以接受非类型参数,如整型或指针。 2. **模板特化**:对于某些特定的数据类型,可以提供特化的函数模板,以优化特定类型的处理。 3. **隐式类型转换**:函数模板...

    C++函数模板详解应用

    这里`N`就是非类型模板参数。 #### 三、模板函数的重载 同一个函数名可以有多个不同的模板版本,这称为重载。 ```cpp template T min(T a, T b); template T min(T a, T b, T c); ``` 这两个模板函数可以共存...

    c++ templates 全览

    非类型模板参数有一些限制,例如,它们不能是引用类型,也不能是浮点数。此外,非类型模板参数的值必须在编译时可确定。 ### 8. 模板参数推导 当调用模板函数时,编译器可以根据函数参数自动推断出模板参数的类型...

    C++入门学习——模板示例代码

    8. 非类型模板参数: 除了类型参数外,模板还可以接受非类型参数,如整数、指针或枚举常量。例如,我们可以创建一个模板函数,根据非类型参数决定函数的行为。 总之,C++模板是其强大的泛型编程基础,它们提高了...

    C++模板资源

    - 非类型模板参数可以用整型、浮点型、指针类型或枚举类型,但不能是类类型。 4. **模板实例化**: - 当模板被用于特定类型时,编译器会自动生成对应的实例。例如,`max(5, 7)` 会产生一个实际的函数,处理整型...

    变长参数 编译期类型识别技术

    例如,它无法处理非类型模板参数或模板模板参数的变长。此外,由于C++标准没有规定`typeid`返回的类型名称字符串的具体格式,`typeid(T).name()`的输出在不同的编译器下可能有所不同,这在跨平台开发时可能会带来...

    c++模板笔记

    模板参数不仅可以是类型,还可以是值参数,即非类型模板参数。值参数在实例化时必须提供具体的值,如: ```cpp template void printArray(int (&arr)[N]) { for (size_t i = 0; i ; ++i) { cout [i] ; } cout ...

    C++课件chap10 类模板.PPT

    为了支持不同大小的向量,可以添加一个非类型模板参数,如 `template , int size&gt; class vector`,并提供相应的构造函数。 STL,即标准模板库,是C++库的核心部分,它提供了多种容器(如list、map、queue、set、...

    Microsoft Visual C++ 6.0 TemplateLibraries Reference模板库参考手册

    理解并应用模板的最佳实践,如使用非类型模板参数和模板模板参数,可以帮助避免这些问题。 六、模板的调试和诊断 由于模板的复杂性,调试模板代码可能更具挑战性。理解如何使用编译器的错误消息,以及使用`std::...

    An Idiot's Guide to C++ Templates

    - 非类型模板参数 - 类模板作为参数 - 类模板中的默认参数 - 类的方法作为模板函数 6. **总结** #### 模板的语法 在 C++ 中,模板使用尖括号 `&lt; &gt;` 来定义。这些尖括号内的内容可以是: - `class T` 或 `...

    C ++专业人员的提示和技巧Tips and Tricks of the C++ Professionals

    - 使用auto声明非类型模板参数:介绍auto关键字在模板编程中的用法,提高类型推导的便利性。 - 模板模板参数:介绍模板模板参数的使用,允许模板接受另一个模板作为参数。 - 默认模板参数值:讲解如何为模板参数...

    c++17新特性总结1

    C++17允许非类型模板参数在编译时进行计算,增加了模板的灵活性。 2.4 条件分支语句初始化 在C++17中,可以在条件语句中初始化变量,这使得代码更简洁。 2.5 聚合初始化 C++17对聚合初始化进行了改进,允许在某些...

    C++多范型设计

    非类型模板参数** 除了类型参数外,模板还可以有非类型参数,如整型、枚举类型等。这些参数在模板实例化时必须提供具体的值,而非类型。例如,定义一个计算阶乘的模板: ```cpp template int factorial() { // ...

    vc++学习课件

    8. 非类型模板参数:除了类型参数外,模板还可以接受非类型参数,如整型、指针或枚举值。这使得模板能够根据非类型值的不同来生成不同的代码。 通过深入学习和实践"第六章 模板.ppt"的内容,初学者将能够理解和运用...

    模板函数和模板类的编程应用

    ### 非类型模板参数 除了类型参数外,模板还可以接受非类型参数,如整数或枚举值。这可以用于实现基于参数值的算法变体: ```cpp template void print() { for (int i = 0; i ; ++i) { std::cout ; } } // ...

    c++模版元编程

    - **非类型模板参数**:模板参数也可以是非类型值,如整数、枚举等。 - **模板特化**:为特定情况提供定制版本的能力,例如为特定类型提供特定实现。 - **模板偏特化**:允许为一组类型提供特定实现。 - **模板元...

Global site tag (gtag.js) - Google Analytics