第一篇博客---记一次因构造函数给我狠狠的教训

之前一直没有写博客的习惯,做了一些东西做了就做了,可是今天因为一点小小的问题让我找了一整天的bug,想以此为教训,鞭挞自己,做过的东西千万啊要掌握、融会贯通,不然就白做了,今天就以此为契机,以后没做一点东西都会养成写博客的习惯,将自己做过的东西记录下来,让自己以后有证可查。

今天的问题很简单,由于构造函数的执行顺序引起的错误,下面贴上伪代码说明,首先是头文件:


 
 
class A
{
public:
    B* m_b;
    C* m_c;
    ErrorClass m_err_class;
    D m_d;
}

成员变量m_err_class的初始化需要用到m_b、m_c和m_d,A类型的cpp中构造函数如下:

A::A() :
    m_b(new B()),
    m_c(new C()),
    m_err_class(m_b, m_c, &m_d)
    {...}


就是这样的代码,折磨了我一整天,程序总是莫名其妙的报错,百思不得其解,就在刚刚突然发现这个问题,将A头文件里面成员变量声明的顺序改成如下后终于OK了:

class A
{
public:
    B* m_b;
    C* m_c;
    D* m_d;
    ErrorClass m_err_class;
}

竟然让这么简单的问题搞了一天,这是一次血淋淋的教训,希望自己能够更踏实的学习,千万不能昨晚就忘记,每做一点东西都要积累起来,这样日积月累才能使自己强大,加油垃圾!
发布了16 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zhounixing/article/details/70253862