
c/c++随笔
文章平均质量分 61
hengshan
这个作者很懒,什么都没留下…
展开
-
c++中的左移、右移运算
c++中,整数有符号数和无符号数两种。对于这两种数做右移(》)操作,情况不同1、如果是无符号数,那么做右移操作时,空缺的高位都用0填充事例: unsigned a = -1;//对于32位整数,a的值是0xffffffff a >>= 31;//a的结果是1 ,高位用0填充2、如果是有符号数,那么做右移操作时,空缺的高位用符号位填充事例: int b = -1;//符号位是1 b >>=31;//b的结果是-1,高位用符号位填充 int c = 1;//符号位是0 c原创 2011-05-23 18:58:00 · 35945 阅读 · 5 评论 -
cplusplus from stackoverflow
【声明】声明本文部分材料来源网络,如有疑问请联系。运算符重载[1] http://stackoverflow.com/questions/4421706/operator-overloading/4421729#4421729引用[1] http://stackoverflow.com/questions/3601602/what-are-rvalues-lvalues-x...转载 2018-05-18 10:16:02 · 190 阅读 · 0 评论 -
memset 和 bzero的效率测试。
一直有人提出,meset和bzero的效率问题,认为在初始化小对象的时候,bzero比memset高效一点。今天写了个测试程序,如下:这段测试代码,是分别对4字节整数,11字节的数组,8192字节的数组进行初始化,执行1000000次,求平均值。#include #include #include static inline unsigned long long rdtsc(voi原创 2012-03-28 17:31:31 · 7778 阅读 · 4 评论 -
gcc attribute weak & alias应用
1 gcc attribute weak & alias应用alias ("target")The alias attribute causesthe declaration to be emitted as an alias for another symbol, which must bespecified. For instance, voi原创 2014-08-21 10:16:09 · 4745 阅读 · 1 评论 -
对于 std::vector<T> , 当T没有赋值运算符函数的时候,如何调用vector push_back?
这个问题是在stackoverflow发现的:http://stackoverflow.com/questions/12908398/can-placement-new-and-vectordata-be-used-to-replace-elements-in-a-vector我是对讨论做一个整理,如下。1.代码片段#include 2 #include 3原创 2012-10-16 14:48:41 · 4971 阅读 · 1 评论 -
c/c++中的lvaues(左值)和rvalues(右值)
1.1 写在开头也许有朋友看到这个介绍,会一笑而过。认为,Lvaues不就是,出现在赋值运算符“=”左边的表达式么,相应的rvalues不就是出现在赋值运算符“=”右边的部分么,这有啥难的呢?hand一下!其实在写这篇文章之前,我和你的想法一样。平时看资料,调试代码的时候,经常遇到lvaues和rvalues这两个词。并且每次看到都认为是很简单,不重要的东西,所以都略过,更谈原创 2012-07-20 18:13:30 · 4223 阅读 · 0 评论 -
c++的POD数据类型
1.1 c++的POD数据类型POD: plain old data的缩写。POD类型包括下面类型:1、标量类型,c/c++的基本类型signed integer types (signed char, short, int, long),unsig原创 2011-08-19 12:29:06 · 6371 阅读 · 0 评论 -
c++的“default constructor”
1.1 c++的“default constructor” 今天总算搞清楚了c++的default constructor的概念,它是指没有参数的构造函数(不管是编译器隐式生成的,还是程序员显式声明的)。 1、如果程序员没有提供任何构造函数,那么编译器就会隐式声明原创 2011-07-09 08:55:03 · 6254 阅读 · 3 评论 -
c++的 trivial constructor
c++的 trivial constructorc++的构造器包含trivial和nontrivial两种。现在我们讨论trivial类型。trivial constructor的特性:1、由编译器自动生成的(注意编译器自动生成的也有nontrivial类型)2、类中不包含虚函数原创 2011-07-09 00:38:43 · 4256 阅读 · 2 评论 -
在具有多态特性的类体系中,向客户提供使用接口,而不去暴露类的体系结构。
先举个例子,我们在开发中,经常会处理很多异步消息,比如:io消息、信号、定时器等,现在我们就建立一个消息处理器系统,代码如下:struct msg{ int msg_id; char data[1];};class BaseMsgProcessor{public:原创 2011-04-08 07:56:00 · 754 阅读 · 0 评论 -
c & c++中的“指针、指针变量、指针变量的类型”
1.1 c & c++中的“指针、指针变量、指针变量的类型” 1.1.1 指针:1.是变量的地址2.指针的长度和计算机的字长相关,例如:在32位计算机中,指针的长度是32位,即4字节;在64位计算机中,指针的长度是64位,即8字节。 1.1.2 指针变量就是c语言中原创 2011-07-08 11:11:11 · 5481 阅读 · 2 评论 -
c++的模运算
在数学里,“模运算”也叫“求余运算”,用mod来表示模运算。对于 a mod b 可以表示为 a = qb + r,其中q表示商,b表示模数且 b != 0,那么余数 r 满足 0 如果a和b都是自然数,那么r肯定大于等于0且小于b的整数,如果a和b有一个是负数,那么r就不唯一。例如:(-3) % 2 : -3 = (-2)*2 + 1,余数是1;-3 = (-1)*2 - 1 ,余数是-1(-9) % 5 : -9 = (-2)*5 + 1,余数是1;-9 = (-1)*5 - 4 ,原创 2011-05-30 22:43:00 · 18951 阅读 · 0 评论 -
stddef offsetof
offsetof 说明在c标准的stddef.h中有一个获取c/c++结构或者类成员偏移量的宏offsetof,具体定义如下: #ifdef _WIN64#define offsetof(s,m) (size_t)( (ptrdiff_t)&reinterpret_cast<const volatile char&>((((s *)0)->m)...原创 2018-05-25 14:01:45 · 378 阅读 · 0 评论