随笔 - 169,  文章 - 0,  评论 - 45,  阅读 - 225万

随笔分类 -  C/C++

C/C++定义全局变量/常量几种方法的区别
摘要:在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块):在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用g... 阅读全文
posted @ 2015-05-10 17:37 wanghetao 阅读(11789) 评论(0) 推荐(0) 编辑
可变参数宏__VA_ARGS__
摘要:在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如:#define pr_debug(fmt,arg...) \printk(KERN_DEBUG fmt,##arg)用可变参数宏(variadic macros)传递可变参数表你可能很熟悉在函数中使用可变参数表,如:void prin... 阅读全文
posted @ 2015-05-10 15:46 wanghetao 阅读(1695) 评论(0) 推荐(0) 编辑
使用stdarg.h实现可变长度参数
摘要:现在先用一个使用过程讲解一下:◎用法:func( Type para1, Type para2, Type para3, … ){/****** Step 1 ******/va_list ap;va_start( ap, para3 ); //一定要“…”之前的那个参数 ,而且这个参数不能使引用类... 阅读全文
posted @ 2014-09-30 14:45 wanghetao 阅读(574) 评论(0) 推荐(0) 编辑
C++ error: passing 'const std::map<>]' discards qualifiers或pass-by-reference-to-const-map导致的“discards qualifiers”
摘要:产生问题的场景:int func(const map &aMap) { string value = amap[0]; }或者int Test::func()const{ string value = amap[0]; //amap是Test类的成员函数.是就会产生传说中的null引用。}用g++编译上面的代码,会报……discards qualifiers。 这里是原因。 简单来说,map的[]运算符会在索引项不存在的时候自动创建一个对象,有可能会改变map本身,所以不能够用在一个const map上。解决办法有两个: 方法1、不要将形参声明为const方法2、用find... 阅读全文
posted @ 2013-10-20 21:49 wanghetao 阅读(851) 评论(0) 推荐(0) 编辑
STL源码中对Namespace的条件编译
摘要:现代程序猿们对Namespace(命名空间)的使用已经习以为常了,而且现在的编译器对Namespace肯定都有比较好的支持。但是有没有想过在很遥远的某个年代,当时编译器并不支持Namespace?这种情况当然是存在的,所以为了保持向后兼容性,STL中使用了条件编译。最近读STL源码(SGI版本)的时候发现了一种很奇怪的情况:有些头文件中包含了“__STL_BEGIN_NAMESPACE”和“__STL_END_NAMESPACE”这样不伦不类的语句,而且编辑器在下面加上了下划线,显然是编辑器所不能解析的。在网上搜索了一下,发现原因如下:#ifndef __SGI_STL_INTERNAL_IT 阅读全文
posted @ 2013-05-26 11:27 wanghetao 阅读(1637) 评论(1) 推荐(1) 编辑
关于智能指针
摘要:读《C++ Stragegies and Tacitics》的时候看到了一段很NB的代码,是关于智能指针的 (程序稍作修改,以便在编译器上运行): 1 #include <string> 2 using namespace std; 3 4 class String_ptr { 5 private: 6 string *ptr; 7 public: 8 String_ptr(string *s) : ptr(s) {} 9 string* operator ->() const {return ptr;}10 operator string*() const... 阅读全文
posted @ 2013-05-18 17:14 wanghetao 阅读(388) 评论(0) 推荐(0) 编辑
delete this--对象请求自杀
摘要:第一次见delete this的时候,没觉得这是一项会有什么特殊作用的技术,因此也就没有特别关注。 昨日在sourcemaking.com上看state模式之c++实现的时候,看到它在状态转换的时候使用了delete this,感觉似乎还不错。 作为一种“禁术”,使用的时候必须要相当小心才行,《C++ FAQ》里提到所谓“小心”至少包括以下几个方面:this对象是必须是用new操作符分配的(而不是用new[],也不是用placement new,也不是局部对象,也不是global对象);delete this后,不能访问该对象任何的成员变量及虚函数(delete this回收的是数据,这包括对 阅读全文
posted @ 2013-05-14 19:44 wanghetao 阅读(634) 评论(0) 推荐(0) 编辑
一段有意思的代码:类实现中将信息存储到其他位置
摘要:今天在看《C++ Strategies and Tactics》的时候发现了一段非常有意思的代码: 1 class Complex_rep { 2 private: 3 friend class Complex; 4 double real_d; 5 double image_d; 6 Complex_rep(double r, double i) : real_d(r), image_d(i) { 7 8 } 9 };10 11 class Complex {12 private:13 Complex_rep *rep;1... 阅读全文
posted @ 2013-05-14 13:17 wanghetao 阅读(285) 评论(0) 推荐(0) 编辑
如何成为一个专业级的c++ 程序员--- An answer from quora
摘要:C++ is aHuuuuuge Language.The Path towards Expertise would be:Understanding C++ -Step 0You have got to read The C++ Programming Language by Stroustrup, no way you can escape this.http://www.amazon.com/The-Progra... Understanding Histrory of C++ and Why come they designed the C++ Features -Step 1The 阅读全文
posted @ 2013-01-09 23:37 wanghetao 阅读(584) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示