上一页 1 2 3 4 5 6 7 8 ··· 25 下一页
摘要: 【1】追踪返回类型的引入 为什么要引入追踪返回类型? 在C++98中,如果一个函数模板的返回类型依赖于实际入口参数类型,那么该返回类型在模板实例化之前可能都无法确定。 还记得Sum模板函数吗?请看如下演化过程: 1 #include <iostream> 2 using namespace std; 阅读全文
posted @ 2020-01-31 16:09 kaizenly 阅读(737) 评论(0) 推荐(0) 编辑
摘要: 【1】typeid与decltype C++98对动态类型支持就是C++中的运行时类型识别(RTTI)。 (1)typeid RTTI的机制是为a56爆大奖在线娱乐类型产生一个type_info类型的数据,可以在程序中使用typeid随时查询一个变量的类型,typeid就会返回变量相应的type_info数据。 t 阅读全文
posted @ 2020-01-30 23:18 kaizenly 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 【1】静态类型、动态类型与类型推导 静态类型和动态类型的主要区别在于对变量进行类型检查的时间点: 静态类型,类型检查主要发生在编译阶段; 动态类型,类型检查主要发生在运行阶段。 类型推导示例如下: 1 int main() 2 { 3 double foo(); 4 auto x = foo(); 阅读全文
posted @ 2020-01-30 02:27 kaizenly 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 【1】右尖括号>的改进 在C++98中,有一条需要规避的规则: 如果在实例化模板的时候出现了连续的两个右尖括号>,那么它们之间需要一个空格来进行分隔,以避免发生编译时的错误。示例如下: 1 // 示例1:嵌套的模板标识 2 template <int i> class X {}; 3 templat 阅读全文
posted @ 2020-01-30 02:00 kaizenly 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 【1】using关键字 C++11标准规定了a56爆大奖在线娱乐新的方法,使用关键字using作为别名声明来定义类型的别名,其后紧跟别名和等号。 作用是把等号左侧的名字规定成等号右侧类型的别名。 (1)using用法与typedef相同点 代码示例如下: 1 #include <iostream> 2 #inclu 阅读全文
posted @ 2020-01-30 01:32 kaizenly 阅读(804) 评论(0) 推荐(0) 编辑
摘要: 【1】为什么引入用户自定义字面量? 在C/C++程序中,常常会使用结构体或者类来创造新的类型,以满足实际的需求。 比如,在进行科学计算时,用户可能需要用到复数(通常会包含实部和虚部两部分)。 对于颜色,用户通常会需要一个四元组(三原色及Alpha)。 对于奥运会组委会,他们则常常会需要七元组(标示来 阅读全文
posted @ 2020-01-29 23:27 kaizenly 阅读(1739) 评论(0) 推荐(0) 编辑
摘要: 【1】受限联合体 一个联合体内,可以定义多种不同数据类型的成员,这些数据成员将会共享相同内存空间,在一些需要复用内存的情况下,可以达到节省空间的目的。 不过,根据C++98标准,并不是所有的数据类型都能够成为联合体的数据成员。如下代码: 1 struct Student 2 { 3 Student( 阅读全文
posted @ 2020-01-29 15:52 kaizenly 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 【1】什么是POD类型? Plain old data structure,缩写为POD,Plain代表是a56爆大奖在线娱乐普通类型,Old体现该类型的对象可以与C兼容。 POD类型是C++语言标准中定义的一类数据结构,适用于需要明确的数据底层操作的系统中。 POD通常被用在系统的边界处,即指不同系统之间只能以底 阅读全文
posted @ 2020-01-28 01:28 kaizenly 阅读(2803) 评论(0) 推荐(0) 编辑
摘要: 【1】显式转换操作符 C++11以前,对explicit关键字的理解可参考随笔《explicit关键字》。 而在C++11中,标准将explicit的使用范围扩展到了自定义类型转换操作符上,以支持所谓的“显式类型转换”。 explicit关键字作用于类型转换操作符上,意味着只有在直接 构造目标类型 阅读全文
posted @ 2020-01-27 22:48 kaizenly 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 【1】为什么引入完美转发? 在函数模板编程中,常有a56爆大奖在线娱乐场景是把模板参数转发给另一个调用函数,这时候如果只提供值传递版本会显得效率太低。看以下代码: 1 template<class TYPE, class ARG> 2 TYPE* getInstance(ARG arg) 3 { 4 TYPE* p 阅读全文
posted @ 2020-01-27 11:46 kaizenly 阅读(6892) 评论(0) 推荐(1) 编辑
摘要: 【1】std::move 在C++11中,标准库在<utility>中提供了一个有用的函数std::move。 这个函数的名字很具有迷惑性,因为实际上std::move并不能移动任何东西,它唯一的功能:将一个左值强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义。 从实现上讲,std: 阅读全文
posted @ 2020-01-27 00:18 kaizenly 阅读(1006) 评论(0) 推荐(0) 编辑
摘要: 【1】左值与右值 在C语言中,常常会提起左值(lvalue)、右值(rvalue)这样的称呼。 而在编译程序时,编译器有时也会在报出的错误信息中包含左值、右值的说法。 不过左值、右值通常不是通过一个严谨的定义而为人所知的。 事实上,之a56爆大奖在线娱乐只知道一些关于左值、右值的判断而很少听到其真正的定义的一个原因 阅读全文
posted @ 2020-01-26 21:03 kaizenly 阅读(1454) 评论(0) 推荐(1) 编辑
摘要: 【1】为什么引入移动语义? 拷贝构造函数中为指针成员分配新的内存再进行内容拷贝的做法在C++编程中几乎被视为是最合理的。 不过在有些时候,a56爆大奖在线娱乐们会发现确实不需要这样的拷贝构造语义。如下示例: 1 #include <iostream> 2 using namespace std; 3 4 class 阅读全文
posted @ 2020-01-26 01:22 kaizenly 阅读(714) 评论(0) 推荐(0) 编辑
摘要: 【1】浅拷贝 一直以来,设计一个类,个人认为,最能体现水平的地方在于:类中含有指针成员变量。 如下一个典型的浅拷贝示例: 1 #include <iostream> 2 using namespace std; 3 4 class HasPtrMem 5 { 6 public: 7 HasPtrMe 阅读全文
posted @ 2020-01-25 23:09 kaizenly 阅读(4271) 评论(0) 推荐(0) 编辑
摘要: 【1】为什么需要委派构造函数? 委派构造函数,委派即委托安排,即委托安排其他构造函数代办构造对象的任务。 为什么需要委派构造函数?请先看如下代码片段(示例1): 1 class Info 2 { 3 public: 4 Info() : type(1), name('a') 5 { 6 InitRe 阅读全文
posted @ 2020-01-25 11:37 kaizenly 阅读(766) 评论(0) 推荐(0) 编辑
摘要: 【1】为什么需要继承构造函数? 首先,看看如下代码片段: 1 struct A 2 { 3 A(int i) 4 {} 5 }; 6 7 struct B : A 8 { 9 B(int i) : A(i) 10 {} 11 }; 在C++中非常常见:B派生于A,B在构造函数中调用A的构造函数,从而 阅读全文
posted @ 2020-01-24 16:03 kaizenly 阅读(1710) 评论(0) 推荐(0) 编辑
摘要: 【1】C++11支持局部的类型和匿名类型做模板的实参 在C++98中,标准对模板实参的类型还有一些限制。 具体地讲,局部的类型和匿名的类型在C++98中都不能做模板类的实参。 而在C++11标准中,支持做模板的实参。示例如下: 1 template<typename T> class X {}; 2 阅读全文
posted @ 2020-01-24 03:04 kaizenly 阅读(789) 评论(0) 推荐(0) 编辑
摘要: 【1】引入外部模板为了解决什么问题? “外部模板”是C++11中一个关于模板性能上的改进。实际上,“外部”(extern)这个概念早在C的时候已经就有了。 常见的情况,在一个文件a.c中定义了一个变量int i,而在另外一个文件b.c中想使用它,这个时候就会在没有定义变量i的b.c文件中做一个外部变 阅读全文
posted @ 2020-01-24 01:12 kaizenly 阅读(3615) 评论(3) 推荐(2) 编辑
摘要: 类模板:通用的类描述(使用泛型来定义类),进行实例化时,其中的泛型再用具体的类型替换。 函数模板:通用的函数描述(使用泛型来定义函数),进行实例化时,其中的泛型再用具体的类型替换。 【1】C++98标准中两者的区别 函数模板和类模板在C++98标准中一起被引入,两者区别主要在于: 在类模板声明时,标 阅读全文
posted @ 2020-01-23 21:35 kaizenly 阅读(7399) 评论(0) 推荐(1) 编辑
摘要: 严正声明:如果没有搞明白重载、覆盖、隐藏等基础概念,请先参见随笔《重载 覆盖 隐藏》 【1】为什么要引入final关键字? 在通常情况下,一旦在基类A中的成员函数fun被声明为virtual的,那么对于其派生类B而言,fun总是能够被重写的。 有的时候a56爆大奖在线娱乐们并不想fun在派生类B中被重写,那么,C++ 阅读全文
posted @ 2020-01-23 16:00 kaizenly 阅读(524) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 25 下一页
打赏_a56爆大奖在线娱乐