栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习日志53---模板函数实例化、默认类型与非类型参数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习日志53---模板函数实例化、默认类型与非类型参数

目录
  • 一、模板函数实例化
  • 二、默认类型与非类型参数


一、模板函数实例化
#include
#include
using namespace std::string_literals;

//函数模板定义
template
T max(T x, T y)
{
	return (x > y ? x : y);
}
//显式实例化:证书
template int max(int, int);
int main()
{
    //调用显式实例化的函数
	std::cout << "max(1,2) : " << max(1, 2) << std::endl;
	//浮点数实例化
	std::cout << "max(2.9,1.0): " << max(2.9, 1.0) << std::endl;
	//字符实例化
	std::cout << "max('A','D'): " << max('A', 'D') << std::endl;
	//字符串字面量实例化
	std::cout << R"(max("ABC","ABD") :  )" << max("ABC", "ABD") << std::endl;
	std::cout << R"(max("124","123")  :)" << max("124", "123") << std::endl;

	//std::string 类型实例化
//	std::cout << R"(max("ABC"s,"ABD"s) )" << max("ABC"s,"ABD"s) << std::endl;
//	std::cout << R"(max("ABD"s,"ABC"s) )" << max("ABD"s, "ABC"s) << std::endl;
	//名字空间冲突问题



}

结果如上图所示。

二、默认类型与非类型参数
#include"Stack.h"
#include
#include
int main()
{
	Stack<> c;
	std::string s{ "Hello,World!" };
	for (auto i : s)
	{
		c.push(i);
	}
	for (; c.empty() != true;)
	{
		std::cout << c.pop();
	}
}

结果如上图所示。

相关文件

#pragma once
template
class Stack
{
private:
	T elements[N];
	int size{ 0 };
public:
	bool empty();
	T  peek();
	T  push(T value);
	T  pop();
	int getSize();
	Stack();


};

template
Stack::Stack()
{
	size = 0;
	for (auto& i : elements)
	{
		i = 0;
	}
}

template
bool Stack::empty()
{
	return (size == 0 ? true : false);
}

template
int Stack::getSize()
{
	return size;
}

template
T Stack::peek()
{
	return elements[size - 1];
}

template
T Stack::pop()
{
	T temp = elements[size - 1];
	elements[size - 1] = 0;
	size--;
	return temp;
}

template
T Stack::push(T value)
{
	elements[size] = value;
	size++;
	return value;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/869297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号