2011年5月8日
摘要: c++中的delete和delete[] 昨天写了一篇关于delete和delete[]的文章,有位仁兄指出我的结论是错误的,那样的结果只会在特定的编译器程序。为了不会误导大家,文章意见删除。回家后仔细看了《Effective C++》,是我看书太不仔细了,虽然忘了那位仁兄是谁了,在这里还是谢谢你。现将《Effective C++》中正确的观点、结论摘录如下: 1. 当你使用new时,有两件事会发生。第一,内存被配置(透过函数operator new)。第二,会有一个(或以上)的constructors针对此内存被调用。当你使用delete时,也有两件事发生:一个(或以上)的destructo 阅读全文
posted @ 2011-05-08 16:06 COS 阅读(1061) 评论(0) 推荐(2)
摘要: string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的string太长而无法表达时会抛出length_error异常 string类的字符操作:const char &operator[](int n)const;const char &at(int n)const;char &operator[](int n) 阅读全文
posted @ 2011-05-08 14:24 COS 阅读(382) 评论(0) 推荐(1)
摘要: 时常在cpp的代码之中看到这样的代码:#ifdef__cplusplusextern"C"{#endif//一段代码#ifdef__cplusplus}#endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。 要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字 阅读全文
posted @ 2011-05-08 14:12 COS 阅读(650) 评论(0) 推荐(1)