您的位置:首页 > 游戏 > 手游 > 塘沽网红图书馆地址_如和建立网站_我想在百度发布信息_成都市seo网站公司

塘沽网红图书馆地址_如和建立网站_我想在百度发布信息_成都市seo网站公司

2024/9/22 11:17:42 来源:https://blog.csdn.net/GGbond665/article/details/142323575  浏览:    关键词:塘沽网红图书馆地址_如和建立网站_我想在百度发布信息_成都市seo网站公司
塘沽网红图书馆地址_如和建立网站_我想在百度发布信息_成都市seo网站公司

1.函数模版

1.写法与作用

template<class T>
T add(T a, T b)
{return a + b;
}

模版本质是为了适应指定类型,而不用写多个函数重载完成同一功能。

这个加法函数就可以适应int、double等类型的加法。

2.推导实例化

//推导实例化
int a = 0, b = 0;
double c = 3.0, d = 4.0;
int e = add(a, b);
double f = add(c, d);

在这里模版函数会识别实参的类型来推导那个T类型是什么类型。

3.显式实例化

//显式实例化
int a = 0, b = 0;
double c = 3.0, d = 4.0;//指定T类型为int类型
int e = add<int>(a, b);
//指定T类型为double类型
double f = add<double>(c, d);

2.类模版

template<class T>
class Stack
{
public://实现了可以用栈存储不同类型的数据的功能Stack(int n = 4):_array(new T[n]),_size(0),_capacity(n){}~Stack(){delete[] _array;_array = nullptr;_size = _capacity = 0;}void Push(const T& x);private:T* _array;size_t _capacity;size_t _size;
};//声明与定义分离,需要指定类域与类模版template<class T>
void Stack<T>::Push(const T& x)//用引用减少拷贝构造,提高效率
{if (_size == _capacity){T* tmp = new T[_capacity * 2];memcpy(tmp, _array, sizeof(T) * _size);delete[] _array;_array = tmp;_capacity *= 2;}_array[_size++] = x;
}int main()
{// 类模板都是显示实例化Stack<int> st1; // intst1.Push(1);st1.Push(2);st1.Push(3);Stack<double> st2; // doublest2.Push(1.1);st2.Push(1.1);st2.Push(1.1);Stack<double>* pst = new Stack<double>;//...delete pst;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com