c++函数模板

void foo(const int& x);
void foo(const int& x);
void foo(int const& x);
void foo(int const& x);

几种都可,常数更倾向int const,可以用理论解释

const int*  bookmark;

 int* const bookmark;//报错

==函数模板==

//hpp

#pragma once
template <typename T>
inline T const& max(T const& a, T const& b)
{
return a < b ? b : a;
}

//cpp

#include<iostream>
#include<vector>
#include<list>
#include<map>
#include<string>
#include "fun.hpp"
int main()
{
std::string b = ::max<std::string >("ddddddddddf", "sdw");//::确保成员名字空间
std::cout << b << std::endl;
return 0;
}

类型强制类型转换

max(static_cast<double>(4),1.2)

显示指定max<int>(1,2);

函数模板不能指定缺省

返回类型也可指定参数,但是很麻烦(调用时显式化);

在函数里显示返回,但是这种也很麻烦(返回时显式化);

编译两次:实例化前,查看语法;实例化期间,查看函数调用是否有效

函数重载max<>()只有模板才能调用;

posted @ 2022-09-19 15:59  风飞侠  阅读(19)  评论(0)    收藏  举报