C/C++
real李邦柱
服务器端研发设计,区块链开发
展开
-
C++私有成员变量被对象直接访问
C++访问控制:对象直接访问私有变量原创 2014-11-13 11:01:03 · 6521 阅读 · 0 评论 -
C++ STL之map的使用方法
map解释map(映射)——经过排序了的二元组的集合,map中的每个元素都是由两个值组成,其中的key(键值,一个map中的键值必须是唯一的)是在排序或搜索时使用,它的值可以在容器中重新获取;而另一个值是该元素关联的数值。比如,除了可以ar[43] ="overripe"这样找到一个数据,map还可以通过ar["banana"] ="overripe"这样的方法找到一个数据。如果你想获得其中的原创 2014-06-19 12:53:16 · 752 阅读 · 0 评论 -
C/C++ 宏中“#"和"##”的常见用法
一般用法通常情况我们一般把宏#参数变为一个字符串,形如:123--->”123”,当然这种转换方法很多譬如:itoa,sprintf等函数都可以完成,但是如果频繁的调用这些系统调用的话,会造成较大的系统开销,使用宏#不失为一种高效便捷的手段,用##把两个宏参数贴合在一起.简单的方法。原创 2014-06-19 12:47:43 · 696 阅读 · 0 评论 -
C++构造函数为什么不能是虚函数
原因1:从存储空间角度 这里你需要知道一个概念,那就是虚函数表vtbl,每一个拥有虚成员函数的类都有一个指向虚函数表的指针。对象通过虚函数表里存储的虚函数地址来调用虚函数。 那虚函数表指针是什么时候初始化的呢?当然是构造函数。当我们通过new来创建一个对象的时候,第一步是申请需要的内存,第二步就是调用构造函数。试想,如果构造函数是虚函数,那必然需要通过vtbl来找到虚构造函数的入口原创 2014-06-19 12:42:56 · 1332 阅读 · 0 评论 -
C/C++位的移位操作
左移与右移1.左移运算符()是双目运算符,其功能是把"运算符左边的运算数的各二进位全部左移若干位,移动的位数由"运算符右边的数指定,高位丢弃,低位补0。 例如:Int a = 0x1234;Unsigned char* p =(unsigned char*)&a;a = *(p)此时a的最左端一个字节移动8位,a=0x3400;原创 2014-06-20 18:17:41 · 2400 阅读 · 0 评论 -
C/C++ &与&& |与|| 的区别
&&表示逻辑与的意思,即为and。当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。比如 12&&23的结果就是1,12&&-1 的结果是1,123&&0的结果就是0 &&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(原创 2014-06-20 18:16:02 · 4991 阅读 · 0 评论 -
C++ STL容器适用情况的说明
各种容器的特性vector典型的序列容器,C++标准严格要求次容器的实现内存必须是连续的,唯一可以和标准C兼容的stl容器,任意元素的读取、修改具有常数时间复杂度,在序列尾部进行插入、删除是常数时间复杂度,但在序列的头部插入、删除的时间复杂度是O(n),可以在任何位置插入新元素,有随机访问功能,插入删除操作需要考虑。deque序列容器原创 2014-06-19 12:51:44 · 801 阅读 · 0 评论