【C++---4】函数模板与类模板

博客介绍了函数模板和类模板相关内容。函数模板方面,给出代码示例及运行测试图,还提到函数模板和普通函数都可调用时的调用规则。类模板部分同样给出代码示例和运行测试图,代码涉及 class - mod.h 和 class - mod.cpp。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数模板:

template< typename T >

函数模板和普通函数都可以被调用时,优先考虑普通函数

如果函数模板可以产生一个更好的匹配,选择调用模板


代码示例:

template<typename T>

T Add(T left, T right)
{
		return left + right;
}

int main()
{
		cout << Add<int>(1, 2) << endl;
		cout << Add<double>(1.0, 2.7) << endl;

		system("pause");
		return 0;
}

代码运行测试图:

在这里插入图片描述


类模板:

代码示例:

class-mod.h:

#pragma once

template<typename T>

class Seqlist
{
public:
		Seqlist(size_t capacity = 3) :_array(new T[capacity]), _size(0), _capacity(capacity)
		{

		}

		~Seqlist()
		{
			if (_array)
			{
				delete[] _array;
				_size = 0;
				_capacity = 0;
			}
		}

		size_t Size()const
		{
			return _size;
		}

		size_t Capacity()const
		{
			return _capacity;
		}
		
		void PushBack(const T& data)
		{
			_array[_size++] = data;
		}

		void PopBack()
		{
			if (_size == 0)
			{
				return;
			}
			_size--;
		}

		T& operator[](size_t index)
		{
			return _array[index];
		}

		bool Empty()const
		{
			if (_size == 0)
			{
				return true;
			}
			return false;
		}

		void PrintSList()
		{
			for (int i = 0; i < _size; ++i)
			{
				cout << _array[i] << " ";
			}
			cout << endl;
		}

private:
		T* _array;
		size_t _size;
		size_t _capacity;
};

class-mod.cpp

#include "class-mod.h"
#include <iostream>

using namespace std;

int main()
{
		Seqlist<int> d1;

		d1.PushBack(1);
		d1.PushBack(2);
		d1.PushBack(3);

		cout << d1.Capacity() << endl;
		cout << d1.Size() << endl;

		Seqlist<double>d2;

		d2.PushBack(1.0);
		d2.PushBack(2.0);
		d2.PushBack(3.0);

		cout << d2.Capacity() << endl;
		cout << d2.Size() << endl;

		d1.PrintSList();
		d2.PrintSList();

		cout << d1[1] << endl;

		system("pause");
		return 0;
}

代码运行测试图:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值