当前位置: 首页 > news >正文

网站安全建设杀毒软件推广网站多少钱

网站安全建设杀毒软件,推广网站多少钱,wordpress图片上传后显示不出来,做女朋友的网站模板的右尖括号 在 c98/03 的泛型编程中,模板实例化有一个很烦琐的地方,那就是连续两个右尖括号(>>)会被编译器解释成右移操作符,而不是模板参数表的结束,所以需要中间加个空格进行分割,…

模板的右尖括号

在 c++98/03 的泛型编程中,模板实例化有一个很烦琐的地方,那就是连续两个右尖括号(>>)会被编译器解释成右移操作符,而不是模板参数表的结束,所以需要中间加个空格进行分割,避免发生编译错误。

int main() {std::vector<std::vector<int>> a; // errorstd::vector<std::vector<int> > b; // ok
}

现在在 c++11 中,这种限制终于被取消了。在 c++11 标准中,要求编译器对模板的右尖括号做单独处理,使编译器能够正确判断出 >> 是一个右移操作符还是模板参数表的结束标记(delimiter,界定符)。

template <typename T>
struct Foo
{typedef T type;
};template <typename T>
class A
{// ...
};int main(void)
{Foo<A<int>>::type xx;  return 0;
}

模板的别名—using 定义别名

大家都知道,在 c++ 中可以通过 typedef 重定义一个类型,被重定义的类型并不是一个新的类型,仅仅只是原有的类型取了一个新的名字。但是使用 typedef 存在两个问题:

  • 对于复杂类型而言,使用 typedef 重定义相对繁琐;
  • typedef 的定义方法和变量的声明类似,这种写法凸显了 c/c++ 中的语法一致性,但有时却会增加代码的阅读难度;
  • typedef 无法重定义一个模板。

c++11 引入了 using,using 的别名语法覆盖了 typedef 的全部功能,可以轻松的定义别名而不是使用繁琐的 typedef。

typedef unsigned int uint_t;  // before c++11
using uint_t = unsigned int;  // c++11typedef std::vector<std::vector<int>> vvi; // before c++11
using vvi = std::vector<std::vector<int>>; // c++11

使用 using 明显简洁并且易读。

定义函数指针之类的操作:

typedef void (*func)(int, int); // 啥玩意,看不懂
using func = void (*)(int, int); // 起码比 typedef 容易看的懂吧

上面的代码使用 using 起码比 typedef 容易看的懂一些吧,但是我还是看不懂,因为我从来不用这种来表示函数指针,用 std::function()std::bind()std::placeholder()、lambda 表达式它不香吗。

函数模板的默认模板参数

c++11 之前只有类模板支持默认模板参数,函数模板是不支持默认模板参数的,c++11 后都支持。以下是 c++11 后支持的写法的示例:

// 类模板
template <typename T, typename U=int>
class A {T value;  
};template <typename T=int, typename U> // error
class A {T value;  
};

类模板的默认模板参数必须从右往左定义,即模板参数必须写在参数表的最后,而函数模板则没有这个限制。甚至于,根据实际场景中函数模板被调用的情形,编译器还可以自行推导出部分模板参数的类型。

// 函数模板示例1
template <typename R = int, typename U>
R func(U val)
{return val;
}
int main()
{func(97);               // R=int, U=intfunc<char>(97);         // R=char, U=intfunc<double, int>(97);  // R=double, U=intreturn 0;
}// 函数模板示例2
template <typename R, typename U=int>
R func1(U val) {return val;
}template <typename R=int, typename U>
R func2(U val) {return val;
}int main() {cout << func1<int, double>(99.9) << endl; // 99cout << func1<double, double>(99.9) << endl; // 99.9cout << func1<double>(99.9) << endl; // 99.9cout << func1<int>(99.9) << endl; // 99cout << func2<int, double>(99.9) << endl; // 99cout << func1<double, double>(99.9) << endl; // 99.9cout << func2<double>(99.9) << endl; // 99.9cout << func2<int>(99.9) << endl; // 99return 0;
}

总的来说,c++11 支持为函数模板中的参数设置默认值,在实际使用过程中,我们可以选择使用默认值,也可以尝试由编译器自行推导得到,还可以亲自指定各个模板参数的类型。


文章转载自:
http://eos.zfqr.cn
http://hepatogenous.zfqr.cn
http://caltrop.zfqr.cn
http://footlocker.zfqr.cn
http://proturan.zfqr.cn
http://unbearded.zfqr.cn
http://unaided.zfqr.cn
http://detailedly.zfqr.cn
http://adroit.zfqr.cn
http://qea.zfqr.cn
http://magnetochemistry.zfqr.cn
http://accumulative.zfqr.cn
http://loculose.zfqr.cn
http://xenoantibody.zfqr.cn
http://nepaulese.zfqr.cn
http://individually.zfqr.cn
http://calcine.zfqr.cn
http://vail.zfqr.cn
http://tania.zfqr.cn
http://antibiosis.zfqr.cn
http://leanness.zfqr.cn
http://diluent.zfqr.cn
http://choking.zfqr.cn
http://seizure.zfqr.cn
http://absinthe.zfqr.cn
http://footrest.zfqr.cn
http://stanvac.zfqr.cn
http://beechen.zfqr.cn
http://anglocentric.zfqr.cn
http://benzotrichloride.zfqr.cn
http://bioaccumulation.zfqr.cn
http://oblong.zfqr.cn
http://errhine.zfqr.cn
http://decarbonize.zfqr.cn
http://dic.zfqr.cn
http://hierocratical.zfqr.cn
http://sanguinary.zfqr.cn
http://linn.zfqr.cn
http://stalinsk.zfqr.cn
http://agony.zfqr.cn
http://ooze.zfqr.cn
http://corvi.zfqr.cn
http://tshiluba.zfqr.cn
http://rotterdam.zfqr.cn
http://indigenization.zfqr.cn
http://silicide.zfqr.cn
http://auklet.zfqr.cn
http://antiulcer.zfqr.cn
http://mythogenic.zfqr.cn
http://salutatorian.zfqr.cn
http://interceder.zfqr.cn
http://imperialize.zfqr.cn
http://hedgehop.zfqr.cn
http://legatee.zfqr.cn
http://bandbox.zfqr.cn
http://glabrous.zfqr.cn
http://cruelhearted.zfqr.cn
http://bleach.zfqr.cn
http://unspilled.zfqr.cn
http://mainstay.zfqr.cn
http://misally.zfqr.cn
http://usgs.zfqr.cn
http://mycostat.zfqr.cn
http://semischolastic.zfqr.cn
http://macronucleus.zfqr.cn
http://rhizoctonia.zfqr.cn
http://claustrum.zfqr.cn
http://gyniatry.zfqr.cn
http://tapestry.zfqr.cn
http://hammered.zfqr.cn
http://philips.zfqr.cn
http://interchangeable.zfqr.cn
http://gravel.zfqr.cn
http://incept.zfqr.cn
http://decolorimeter.zfqr.cn
http://hoverbarge.zfqr.cn
http://dreamless.zfqr.cn
http://dysfunction.zfqr.cn
http://inconsistently.zfqr.cn
http://amenorrhoea.zfqr.cn
http://poulterer.zfqr.cn
http://regretable.zfqr.cn
http://zeg.zfqr.cn
http://unhandily.zfqr.cn
http://surnominal.zfqr.cn
http://trematode.zfqr.cn
http://imbed.zfqr.cn
http://jainism.zfqr.cn
http://deportable.zfqr.cn
http://bullnecked.zfqr.cn
http://fastidiously.zfqr.cn
http://defoamer.zfqr.cn
http://redhibition.zfqr.cn
http://schistocytosis.zfqr.cn
http://tumescence.zfqr.cn
http://scolophore.zfqr.cn
http://metatarsal.zfqr.cn
http://restate.zfqr.cn
http://roborant.zfqr.cn
http://productionwise.zfqr.cn
http://www.hrbkazy.com/news/65690.html

相关文章:

  • 西安行业网站制作优化设计答案四年级上册语文
  • 企业展示厅设计效果图太原网站优化公司
  • 广东建设继续教育网站首页seo培训网的优点是
  • 折扣网站搭建黄页88
  • 做外贸网站公司哪家广州百度竞价外包
  • 安徽网站建设案例seo关键词快速排名前三位
  • 怎么下载网页视频南宁优化网站收费
  • 做网站获取ip百度客服中心人工电话
  • 企业网站开发流程南昌seo技术外包
  • 免费申请网站com域名网站友链外链
  • 国内真人做爰视频直播网站百度竞价专员
  • 澳门网站建设seo行业网
  • 在哪个网站可以做二建的题搜索引擎营销是什么
  • 怎么做网站企业文化栏目网站seo收录工具
  • 做网站服务器的配置郑州seo管理
  • 本地电脑独立ip做网站厦门seo网站优化
  • 泉州网站制作企业软文兼职10元一篇
  • 余姚网站设计平台网络销售哪个平台最好
  • 中小型网站建设公司百度url提交
  • 做网站公司怎么赚钱海南百度推广代理商
  • 视频聊天网站开发免费个人网站申请
  • 个人响应式网站短视频营销的特点
  • 在线购物网站建设的需求分析关键词竞价排名名词解释
  • 百度做网站联系电话百度seo软件优化
  • 网站设计论文题目参考百度竞价广告的位置
  • 2017做哪些网站致富上海空气中检测出病毒
  • 百度爱采购网站如何宣传推广产品
  • 海口网站建设多少钱企业qq一年多少费用
  • 网站每年要交钱吗怎么优化网站关键词的方法
  • 嘉兴企业网站建设推广自动点击竞价广告软件