一、如何处理多返回值
7、*结构体*
/////////////////////////////////////
1、c++中方法在参数中增加多个引用,用他们接住要返回的值
void classes (int a,int b,std::string& outc,std::string& outd)
{
outc=a+b;
outd=c-b;
}
2、new一个字符串数组接住
std::string* classe (int a,int b,std::string& outc,std::string& outd)
{
std::string c = a+b;
std::string d = a+b;
return new std::string[]{c,d};
}
3、
4、
5、
6、
二、模板
模板templates
1、无模板(重载)
2.有模板
#include<iostream>
#include<string>
using namespacestd;
template<typenameT>//template只是一个模板,只有在调用函数时,这个函数才会被编译器创建
voidPrint(Tvalue)
{
cout <<value<< endl;
}
template<intN>//整数模板
classTafei
{
private:
intnumers[N];
public:
intGetSize()const{returnN; }
};
template<typenameA,intB>
classMiao
{
private:
Anumers[B];
public:
intGetSize()const{returnB; }
};
intmain() {
Print(1);//自动推导类型
Print<int>(1);//同上,指定类型
Print("Hello");
Print<string>("Hello");
Print(8.8f);
Tafei<5> abc;
cout<<abc.GetSize()<<endl;
Miao<string, 8> abd;
cout<<abd.GetSize()<<endl;
return0;
}
生成:
3.also
#include<iostream>
#include<string>
#include<typeinfo>
using namespacestd;
// 1. 先声明一个模板函数,用于获取类型名
template<typenameT>
const char* get_type_name() {
return typeid(T).name();// 默认返回原始类型名
}
// 2. 对我们关心的类型做特化,返回友好名称
template<>
const char* get_type_name<string>() {
return"string";
}
template<>
const char* get_type_name<int>() {
return"int";
}
template<>
const char* get_type_name<float>() {
return"float";
}
// 3. 修改 Miao 类的 GetType() 方法,使用这个模板函数
template<typenameA,intB>
classMiao
{
private:
Anumers[B];
public:
intGetSize()const{returnB; }
const char* GetType()const{
returnget_type_name<A>();// 调用我们的模板函数,获取友好名称
}
};
// 其他代码保持不变...
intmain() {
// ... 之前的 Print 调用 ...
Miao<string, 8> abd;
cout<<abd.GetSize()<<endl;
cout << abd.GetType() << endl;// 现在会输出 "string"
return0;
}
4.不要滥用模板!!!(有些代码服务甚至禁用模板)