C++
龙虾小兵
这个作者很懒,什么都没留下…
展开
-
右值引用,移动语义和完美转发
书常读常新。今天重学右值引用,移动语义和完美转发又有了新的认识,现总结如下:1.区分右值和左值的简单方法:看能不能对表达式取地址,如果能就是左值,不能即为右值。右值的特点是不具名,不能通过名称找到它,只能通过引用的方式找到。2.右值引用的作用是,延长右值的生命周期,右值的生命周期将和右值引用一样,只要右值引用变量还存活,该右值临时量将一直存活下去。我们可以使用这一特性做一些性能优化,例如移动拷...原创 2020-02-05 21:52:25 · 302 阅读 · 0 评论 -
NULL, '\0',0 '0'的区别
如题,在程序中经常遇到NULL,和'\0',常常疑惑它们是什么关系,其实它们的值是一样的,只不过表现的形式不一样: 1、NULL; NULL 即空指针,在C和C++中的形式不一样,msdn上有如下的内容那个:#if !defined(NULL)&&defined(__NEEDS_NULL)#ifdef __cplusplus#define NULL 0#else#def转载 2016-11-29 15:39:04 · 289 阅读 · 0 评论 -
指针函数和函数指针的区别
函数指针是一个指向函数的指针,而指针函数只是说明他是一个返回值为指针的函数。 函数也有地址,函数的地址是存储其机器代码的内存的开始地址。以前总也记不住指针函数和函数指针的区别,其实加上一个“的”就很容易区分: 指针的函数:指针为修饰词,函数才是主体,故指针函数本质为一个函数; 函数的指针:函数为修饰词,指针才是主体,故函数指针本质为一个指针。下面主要介绍函数指针:获取函数地址:原创 2016-11-30 15:10:56 · 648 阅读 · 0 评论 -
c++中的隐藏、重载、覆盖(重写)
重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual关键字。令人迷惑的隐藏规则本来仅仅区别重载与覆盖并不算困难,但是C++的隐藏规则使问题复杂性陡然增加。这里“隐藏转载 2016-11-28 08:39:06 · 273 阅读 · 0 评论 -
深入理解C++的动态绑定与静态绑定的应用详解
为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。 需要理解四个名词: 1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。 2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。 关于对象的静态类型和动态类型,看一个示例: class B{}class C转载 2016-11-28 08:41:13 · 611 阅读 · 0 评论 -
关于各种无法解析的外部符号问题的相应解决方案
原文:http://blog.csdn.net/enotswn/article/details/5934938在使用vs2008调试程序的过程中,经常会出现无法解析的外部符号问题,可能的原因有很多种,下面这些是我一年来积累的经验.仅供参考. 考虑可能的原因:[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包.[1]只转载 2017-05-19 16:51:17 · 1726 阅读 · 0 评论 -
C++类知识总结
c++类1、初始化const或引用类型数据成员的唯一机会是在构造函数初始化列表中。2、使用成员初始化列表时成员初始化的次序:第一个成员首先被初始化、然后是第二个,依次类推。构造函数初始化列表为类的基类和成员提供初始值,它并不指定初始化的执行次序。首先初始化基类,然后根据声明次序初始化派生类的成员。3、派生类构造函数的要点:首先创建基类对象派生类构造函数应该通过成原创 2016-11-28 09:15:10 · 930 阅读 · 0 评论 -
c++数组易错点总结
c++数组1、只有在定义数组是才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组int cards[4] = { 3 , 6 , 8 , 10}; //okint hands[4] ; //okhand[4] = {5 , 6 , 7 ,9}; //error,只能在定义时初始化hand = cards;原创 2016-11-28 09:03:57 · 972 阅读 · 0 评论