这里劝退一波 Qt Ui,仅仅是 Ui,不是 Qt 哈
选择 Qt 一时爽, Ui 开发火葬场。
忙活两个小时,解决的只是一个非常小的窗口效果,接下来考验你的眼力的时间到了
你找到了上面两幅图的不同了吗?
文章目录
1 为什么要使用模板
也许平常写 C++ 的时候我们不用模板也能 6 得飞起,那为什么还会要产生模板的需求呢?
以下面的例子为例,如果我有了模板,我就可以生产同一类型的多个表情包
但是没有模板的你只能使用最原本的熊猫人,在斗图大战中败北,含恨而归
形象吧,接下来我们来谈一谈什么时候该使用模板,以及模板的语法和分类。
2 究竟我是否该使用模板
是否要用模板,我们可以借鉴开发时的 RunOfThree
原则
RunOfThree原则
第一次
用的时候写个“特例”
。第二次
用的时候copy
第一次的代码,第三次
用的时候就得写一个通用的,当然,为了达到通用
性,你要做的不仅仅是使用模板。
3 C++ 模板语法与分类
模板下面又分为函数模板
、类模板
、模板类
等等,这里我们简单地谈谈前面三种
3.1 函数模板
语法
template <class T1,class T2,...,>
返回类型 函数名(形参表){
statement;
}
例子
template <class T>
// equal to template <typename T>
T max(const T& a, const T& b) {
return a > b ? a : b;
}
说明
template
是C++中用来声明模板的keyword,class和typename是模板形参的声明,两者的差别见:difference of keywords typename and class in templates- 并不是写了函数模板就可以自动处理所有类型的数据了,比如上面的max函数。如果你相对两个自定义类型对象使用,你还得自己重载运算符>。
3.2 类模板和模板类
虽然我们说模版类就是类模版实例化之后的类,但其实there is no such thing as a “template class,” there is only a “class