
c++
文章平均质量分 78
sword_zjcj
这个作者很懒,什么都没留下…
展开
-
容器insert、erase操作引起迭代器失效问题
// insert、erase操作引起迭代器失效问题#include "stdafx.h"#include #include #include #include using namespace std;void print_list(const list& l){ list::const_iterator it; for(it=l.begin(); it!=l.end()原创 2015-01-08 18:07:40 · 1283 阅读 · 0 评论 -
类中指针成员的内存分配和初始化
指针是出现错误的一大来源,如果在类中定义指针成员,在使用过程中必须十分小心;如果在使用类的过程中采用动态分配内存的方式,其问题似乎变得愈加复杂。先定义一个测试类:class Cptr{public: std::vector GetPtr() { std::vector vec; BOOST_FOREACH(int i, IntVec) {原创 2014-12-20 15:39:09 · 3376 阅读 · 0 评论 -
一种容易出错的构造函数调用
对于默认构造函数,知道应该这么用:classType objectName;估计你知道不能classType objectName();因为这是函数声明而不是类对象定义,很多资料都已提及。但是稍微变化一下,就未必一下子反应过来了,看下面这个例子:struct IntTest{ int ival;};int _tmain(int argc, _TCHAR* argv[])原创 2015-01-31 10:21:44 · 730 阅读 · 1 评论 -
c++类的内存结构(单继承)
关于c++类的内存的文章在网上有许多,但是,大多是一段段代码和说明,偶尔有图文并茂的,总觉不是很详细,没有一目了然之感觉并且大部分也没有涉及虚析构,也没有说明访问标号的影响(虽然事实是没有影响)。而这块内容对于理解多态、重写、继承的构造和析构又是足够重要的。终于下定决心,自己动手,在参考多方资料后,终有此文。一、基类内存结构1.1 不带虚函数、虚析构的基类:class Ba原创 2015-01-31 11:23:00 · 946 阅读 · 0 评论 -
reference :引用
#includeusing namespace std;void test1();void test2();int _tmain(int argc, _TCHAR* argv[]){ int i(3); double d; const int ci(4); // 1、一般特性 // int &r; // 引用定义时必须初始化 int &r = i; // 引用原创 2015-01-15 19:09:00 · 580 阅读 · 0 评论 -
函数编写规范
1 :对所调用函数的错误返回码要仔细、全面地处理 2 :明确函数功能,精确(而不是近似)地实现函数设计 3 :编写可重入函数时,应注意局部变量的使用(如编写C/C++ 语言的可重入函数时,应使用auto 即缺省态局部变量或寄存器变量) 说明:编写C/C++语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。 4 :编转载 2015-01-21 10:59:58 · 697 阅读 · 0 评论 -
代码风格、命名规范
我的代码风格:1、 大括号单独一行,内容只有一行的可以写在一行2、 小括号前后不加空格3、 逗号之后空一格4、 for中的每个分号后空一格5、 不在if、for、while语句中的=、+、-、复合赋值+=前后各空一格在语句中的看情形:单次出现可空,多次出现一般不空6、 复合比较>=、==看情况:单次出现可空,多次出现一般不空7、 *、/、原创 2015-02-09 15:14:39 · 721 阅读 · 0 评论 -
两个C++类的交叉引用和同步改变
实际编程中有时会碰到两个类之间交叉引用的问题,比如一个类A含一个类B的指针成员,一个类B含类A的指针成员,两个类相互“关联”;而且更重要的是:对类B的任意修改应该同时改变A中的B指针指向的值,同理适用于类A。良好的设计应当可以通过任意一个类的接口来同时改变A、B两个对象,而不必调用两个类的对应接口。boost::enable_shared_from_this提供了这个能力代码:A.h:原创 2015-03-16 14:48:55 · 1421 阅读 · 0 评论