53.模板
语法为:返回类型前写上template.
日志系统,返回多种类型。使用模板是被推荐的。
例1
template <typename T> //template 定义为模板 <typename T> 模板参数
void Print(T value)
{
std::cout<<value<<std::endl;
}
int main ()
{
Print(5);
Print<float>(5.5f);
print("hello");
std::cin.get();
}
例2-1
template <int N>
class Arrary
{
private:
int m_Arrary[N];
public:
int getSize() const
{
return N;
}
}
int main ()
{
Arrary<5> arrary;
std::cin.get();
std::cout<<arrary.getsize()<<std::endl;
}
例2-2
template <typename T,int N>
class Arrary
{
private:
T m_Arrary[N];
public:
int getSize() const
{
return N;
}
}
int main ()
{
Arrary<int,5> arrary;
std::cin.get();
std::cout<<arrary.getsize()<<std::endl;
}
55 #define 宏
宏,将代码替代为规定的内容而已。使用时只是简单复制。
可以在debug和release模式(不同的配置情况)下,进行不同的宏设定,便于决定某些东西可以在什么模式看到。比如日志文件仅从debug文件打印出来。
例1
#define wait std::cin.get()
#define quto {
int main ()
quto
wait;
}
例2
#define log(x) std::cout<<x<<std::endl;
int main ()
{
log("hello")
std::cin.get();
}
例3 宏的换行
宏必须在同一行里,否则就认为是正常代码
#define MAIN int main()
{\
std::cin.get();\
}
MAIN
56 auto关键字
能够自动推断所写内容的类型,多用于返回那中一长串的类型.
有些特定情况不知道类型信息,可以用auto返回等。
例1
std::string GetName()
{
return "hanmeimei";
}
int main ()
{
int a=5;
auto b=a;
std::string name1=GetName();
auto name=GetName();
}