Tekkaman

导航

 

2014年1月2日

摘要: 【C++11多元组类别】 多元组可被视为是struct其数据成员的一般化。底下是一个多元组类别的定义和使用情况: 我们可以定义一个多元组类别对象proof而不指定其内容,前提是proof里的元素其类别定义了默认构造函数 (default constructor)。此外,以一个多元组类别对象赋值给另一个多元组类别对象是可能的,但只有在以下情况: 若这两个多元组类别相同,则其内含的每一个元素其类别都要定义拷贝构造函数 (copy constructor); 否则的话,赋值操作符右边的多元组其内含元素的类别必须能转换成左边的多元组其对应的元素类别,又或者赋值操作符左边的多元组其内含元素的类别... 阅读全文
posted @ 2014-01-02 22:18 Tekkaman 阅读(741) 评论(0) 推荐(0)
 
摘要: 【C++11之sizeof】 在标准C++,sizeof可以作用在对象以及类别上。但是不能够做以下的事: 这会传回OtherType的大小。C++03并不允许这样做,所以会引发编译错误。C++11将会允许这种使用。参考:http://zh.wikipedia.org/wiki/C++0x#.E5.85.81.E8.A8.B1sizeof.E9.81.8B.E7.AE.97.E5.AD.90.E4.BD.9C.E7.94.A8.E5.9C.A8.E9.A1.9E.E5.88.A5.E7.9A.84.E8.B3.87.E6.96.99.E6.88.90.E5.93.A1.E4.B8.8A.... 阅读全文
posted @ 2014-01-02 22:02 Tekkaman 阅读(464) 评论(0) 推荐(0)
 
摘要: 【C++11静态assert】 C++11新的关键字static_assert可以解决模板中的状态检察。 声明采取以下的形式: 这里有一些如何使用static_assert的例子: 当常数表达式值为false时,编译器会产生相应的错误信息。第一个例子是前处理器指令#error的替代方案;第二个例子会在每个模板类型Check生成时检查assertion。 静态assertion在模板之外也是相当有用的。例如,某个算法的实现依赖于long long类别的大小比int还大,这是标准所不保证的。 这种假设在大多数的系统以及编译器上是有效的,但不是全部。参考:http://zh.wiki... 阅读全文
posted @ 2014-01-02 21:58 Tekkaman 阅读(609) 评论(0) 推荐(0)
 
摘要: 【C++11之使用或禁用对象的默认函数】 C++11 允许显式地表明采用或拒用编译器提供的内置函数。例如要求类型带有默认构造函数,可以用以下的语法: 另一方面,也可以禁止编译器自动产生某些函数。如下面的例子,类型不可复制: = delete的声明(同时也是定义)也能适用于非内置函数, 禁止成员函数以特定的形参调用: 若尝试以 double 的形参调用f(),将会引发编译期错误, 编译器不会自动将 double 形参转型为 int 再调用f()。 若要彻底的禁止以非int的形参调用f(),可以将= delete与模板相结合: 参数:http://zh.wikipedia.o... 阅读全文
posted @ 2014-01-02 21:21 Tekkaman 阅读(2647) 评论(0) 推荐(0)