c/c++
文章平均质量分 68
lgp88
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++模板的一些知识点总结
一.1 可以为类模板的模板参数提供默认参数,函数模板却不行。2可以为类模板进行偏特化,而函数模板却不行。二.模板参数1 类型(可以是内建类型或是用户自定义类型)2 无类型参数(整数,指针,某些静态实体的引用 例:bitset)3 其他模板三.关于typename若一个模板代码内部的某个类型被模板类型参数所限定,则必须使用关键字typename作为前缀进行声明(构造函原创 2011-12-08 21:31:23 · 2311 阅读 · 0 评论 -
c++左值与右值概念剖析
在c++中左值和右值的概念极易混淆,也最让c++er着急的两个概念,然而,理解它们的不同点是非常重要的。C++98/03和 0x标准中对lvalue和rvalue都有不同,C++98/03的解释如下:lvalueness versus rvalueness is a property of expressions, not of objects.Every expression is原创 2012-05-08 15:29:41 · 1697 阅读 · 0 评论 -
shared_ptr / unique_ptr不完全类型
std::unique_ptr和std::shared_ptr是由c++最新标准c++11吸收的智能指针,定义在头文件中,关于这两个指针的具体操作和性质请查看具体文档,这里不做详述。先来看下面这段代码:#includestruct s;struct base{ //std::unique_ptr ps;//编译不过 std::shared_ptr ps;};in原创 2012-05-06 17:16:01 · 7343 阅读 · 0 评论 -
预留位置队列PRQueue:多线程程序中消息输入队列和消息输出队列保持同序
译自: http://accu.org/var/uploads/journals/overload101.pdf 在多线程应用程序中,要求消息输入队列和消息输出队列顺序要求保持一致,而忽略多线程并发处理的顺序,这种情况是比较难处理的。在本文中,作者设计了一种新型解决方案:PRQueue(预留位置队列),较很好的解决这个问题。 PRQueue是使用c++的两个翻译 2012-03-12 13:57:53 · 3061 阅读 · 0 评论 -
#define的一些不常见的用法
一 #define后含有 ## 符号,如以下代码所示:1.#define DEFAULT_COMMAND_REGISTER(command_request,command,factory) \ private: \ void_t __##command_request##_command##_register() \ { \ (void_t)Hyer::原创 2011-12-14 15:25:35 · 852 阅读 · 0 评论 -
设置终端属性,不用回车获取终端输入字符
使用termios(3)及相关函数,适当的设置终端属性,不用回车即可获取终端输入的字符。#include #include int main(){ int c; struct termios oldSet,newSet; tcgetattr(fileno(stdin),&oldSet); newSet = oldSet; newSet.c_lflag &= ~ECHO;原创 2012-02-16 19:51:59 · 2335 阅读 · 0 评论 -
Delete 多态类数组
下面这段代码:#includeclass Base{ public: Base(){} virtual ~Base(){}};class Derive : public Base{ public: Derive():i(1){} virtual ~Derive(){} private: int i;};int m原创 2012-02-13 21:34:04 · 882 阅读 · 0 评论 -
C 编程最佳实践
此文转载自IBM官网:http://www.ibm.com/developerworks/cn/linux/l-bppc/简介本文是为了满足开发人员的需要而写的。我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助。您也许不赞同其中的某些指南,但我们希望您会喜欢其中的一些并在您的编程或移植项目中使用它们。转载 2011-12-21 14:35:27 · 751 阅读 · 0 评论 -
c/c++ extern的使用
(1)C++中引用C语言中的函数和变量 在C++环境下使用C函数的时候,常常会出现编译器无法找到obj模块中的C函数定义,从而导致链接失败的情况。产生这种情况的原因是C++在编译的时候为了解决函数重载及函数多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C则不会,因此会造成链接时找不到对应函数的情况,此时就需要用extern “C”对调用的C函数来进行修饰。如果C原创 2011-12-13 19:57:08 · 542 阅读 · 0 评论 -
宏定义中Do{...}while(0)的作用
我们在有些代码中特别是linux内核源码中会见到这样的宏定义形式:#define MACRO_DATA do{........}while(0);这个do{...}while(0),表达式内一般会封装多个语句。那么如此的定义形式有什么作用呢?1.如果我们如此定义 #define FOO(x) foo(x); bar(x) if (condition) FOO(原创 2011-12-09 21:39:24 · 623 阅读 · 0 评论 -
c++宽字符和多字节字符相互转化类
多字节字符(multibyte character):每个字符可以是一到多个字节不等,而某个字节序列的字符值由字符串或流(stream)所在的环境背景决定。 宽字符:对宽字符的支持其实是ANSI C标准的一部分,用以支持多字节表示一个字符。宽字符和Unicode并不完全等同,Unicode只是宽字符的一种编码方式。在ANSI中,一个字符(char)的长度为一个字节(Byte)。使用原创 2011-12-08 15:15:14 · 3532 阅读 · 0 评论 -
关于零长数组
typedef struct { int head; int size; char reply; char data[0];} packet;这里的char data[0] 即为零长数组;其不占用任何空间,甚至是一个指针的空间都不占;其主要是作为扩展数组用的,我们可以这样使用它,packet* cmd原创 2011-12-08 21:37:04 · 872 阅读 · 0 评论 -
static精析
此文来自CU的一篇精华帖,将static的知识总结的非常全面到位,故转来与大家分享。通常理解static只是指静态存储的概念,事实上在c++里面static包含了两方面的含义。 1)在固定地址上的分配,这意味着对象是在一个特殊的静态区域上创建的,而不是每次函数调用的时候在堆栈上动态创建的,这是static的静态存储的概念。 2) 另一方面,static能够控制对象对转载 2011-12-08 21:50:37 · 583 阅读 · 0 评论
分享