模板及运算符重载的一个小例子 供学习
#include "stdafx.h"
#include <assert.h>
#include <iostream>
using namespace std;
template<class T> class array//模板数组类
{
enum {size = 100};
T A[size];
public:
T& operator[] (int index);//运算符 这里设为引用返回类型 由于可读可写 所以不设置为const 类型
};
template<class T> T& array<T>::operator[] (int index)
{
assert(index >= 0 && index <size);
return A[index];
}
void main()
{
array<int> ia;
array<float>fa;
for (int i = 0; i < 20; i++)
{
ia[i] = i*i;
fa[i] = float(i) * 1.414;
}
for (int j= 0; j < 20; j++)
{
cout<<j<<": "<<ia[j]<<", "<<fa[j]<<endl;
}
getchar();
};
分享到:
相关推荐
在HTML中,虽然三元运算符本身并不直接用于HTML标记的编写,但它是JavaScript中的一个重要工具,可以通过JavaScript嵌入到HTML中,动态地改变HTML元素的属性或者内容。例如,我们可以用三元运算符来控制某个元素的...
我们将讨论标题中的"数组类重载运算符",并基于提供的文件名(Array.cpp、main.cpp、Array.h)来推测这是一个包含头文件、实现文件和主程序的简单项目。 首先,让我们了解什么是重载运算符。在C++中,我们可以为类...
STL(Standard Template Library,标准模板库)是C++的一个强大的组件,它包含了大量实用的数据结构和算法,极大地提高了开发效率。STL主要由三个部分组成:容器、算法和迭代器。 - **容器**:用于存储数据,可以存储...
在这个例子中,我们选择了成员函数的方式,以`+`为例,创建了一个名为`operator+`的函数,接收一个`chongzai`对象作为参数,然后返回一个新的`chongzai`对象,其值是两个对象的`i`, `j`, `k`的和。 3. **关系运算符...
8. **取反.cpp** - 可能是一个关于位操作的例子,展示了如何通过位翻转实现数值的取反,这在低级编程和优化中很有用。 9. **分享家—数十万份试卷、资料、电子书下载.url** - 这不是一个源代码文件,而是一个链接,...
在C++标准库中,如STL(Standard Template Library)就是大量使用了模板技术的一个典型例子。 ### 模板的基本使用 #### 函数模板 函数模板允许我们定义能够接受不同类型的参数并返回不同类型的值的函数。例如,...
考虑一个简单的例子,重载`+`运算符来实现两个复数的加法运算。 ```cpp class Complex { public: double real, imag; Complex(double r, double i) : real(r), imag(i) {} // 重载+运算符 Complex operator+...
接下来,我们来看第二个例子,这是一个名为`Array`的类模板,用于创建动态大小的双精度浮点数数组。`Array`类包含一些成员函数,如构造函数、析构函数、赋值运算符重载以及数组下标运算符重载等。构造函数允许用户...
这里使用了SFINAE来检查一个类型是否支持加法运算符。 ##### 4.2 使能条件(Enable If) `std::enable_if`和`std::enable_if_t`是在C++11中引入的特性,用于有条件地启用模板。这为模板元编程提供了一个强大的工具...
在这个例子中,`T`是一个类型参数,可以是`int`、`char`、`double`或其他任何类型。这样我们就可以为任何类型创建一个栈,如`stack<int>`、`stack<char>`或`stack<double>`。类模板同样是在编译时实例化的,这意味着...
C++模板是C++编程语言的一个强大特性,它允许程序员编写泛型代码,即可以处理多种数据类型的代码。通过模板,程序员能够编写出灵活、可重用且类型安全的代码,极大地提高了编程效率和代码质量。 #### 模板函数详解 ...
在这个例子中,`Graphics`是一个类模板,它有两个模板参数:`type`是一个类型参数,`width`是一个非类型参数。`type`可以用作类内部的数据成员或者成员函数的类型;而`width`则是一个整型常量,可以用来定义类内部的...
一个典型的合理使用reinterpret_cast的例子是在实现哈希函数时,可以将地址映射为一个唯一索引。这通常通过对地址值进行按位移位和异或运算来实现: ```cpp unsigned short Hash(void* p) { unsigned int val = ...
总的来说,Go-raymond作为Go语言的Handlebars实现,提供了一个强大且灵活的模板系统,能够有效地处理复杂的视图逻辑,帮助开发者构建出优雅的Go应用。无论你是初学者还是经验丰富的Go开发者,都能从中受益匪浅。
"全面学习C++编程200例子"是一个针对初学者和进阶者的宝贵资源,旨在通过实践帮助学习者深入理解和掌握C++的核心概念和技术。 1. **基础语法**:C++的基础包括变量定义、数据类型(如int、float、char等)、运算符...
C++还支持泛型编程(通过模板)和函数及运算符重载,增强了类型安全性和程序效率。 1. **类与对象**:C++中的类是定义数据和操作数据的蓝图,而对象是类的实例。通过定义类,我们可以创建具有特定属性和行为的数据...
"C++编程实例(一个简单的例子)"就是一个为新手设计的教程,旨在帮助他们逐步了解C++的基础语法和编程思想。 C++是Bjarne Stroustrup在1983年基于C语言发展起来的一种面向对象的编程语言。它不仅保留了C语言的效率...
C++是一种强大的、通用的编程语言,被广泛应用于软件开发、游戏引擎、系统软件、嵌入式系统等领域。本资源是专为C++初学者设计的一套基础入门学习材料,包含真实可运行的代码示例,旨在帮助学习者从零开始逐步掌握...
例如,PPT中给出了一个比较类的例子。原始代码中有两个类,`Compare_int`和`Compare_float`,分别用于比较整数和浮点数的最大值和最小值。通过引入模板,我们可以创建一个类模板`Compare`,使用虚拟类型参数`numtype...