免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1901 | 回复: 5
打印 上一主题 下一主题

[C++] C++的一个继承问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-04 19:25 |只看该作者 |倒序浏览
#include <stdio.h>
#include <stdlib.h>

class Base_Add
{
public:
&nbsp;&nbsp;&nbsp;Base_Add(void);
&nbsp;&nbsp;&nbsp;~Base_Add(void);
&nbsp;&nbsp;&nbsp;virtual int Prin(void);

};

Base_Add::Base_Add(void)
{
&nbsp;&nbsp;printf("Base_Add");
}

Base_Add::~Base_Add(void)
{
&nbsp;&nbsp;&nbsp;printf("~Base_Add");
}

int Base_Add::Prin(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;printf("1111111111111111111");
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

class Adaptive_Add : public Base_Add
{
public:
&nbsp;&nbsp;&nbsp;&nbsp;Adaptive_Add(void);
&nbsp;&nbsp;&nbsp;&nbsp;~Adaptive_Add(void);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual int Prin(void);

protected:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Base_Add *lock_;

};


Adaptive_Add::Adaptive_Add(void)
{
&nbsp;&nbsp;printf("Adaptive_Add");
}

Adaptive_Add::~Adaptive_Add(void)
{
&nbsp;&nbsp;printf("~Adaptive_Add");
}

int Adaptive_Add::Prin(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;this->lock_->Prin();
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}


int main(int agrc,char *argv[])
{
&nbsp;&nbsp;&nbsp;&nbsp;Adaptive_Add *text = new Adaptive_Add;
&nbsp;&nbsp;&nbsp;&nbsp;text->Prin();
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}


我一运行就出现了,运行错误,请问是怎么回事?

论坛徽章:
0
2 [报告]
发表于 2009-10-04 21:03 |只看该作者
lock_没有初始化

论坛徽章:
0
3 [报告]
发表于 2009-10-04 21:13 |只看该作者
#include <stdio.h>
#include <stdlib.h>

class Base_Add
{
public:
&nbsp;&nbsp;&nbsp;Base_Add(void);
&nbsp;&nbsp;&nbsp;~Base_Add(void);
&nbsp;&nbsp;&nbsp;virtual int Prin(void);

};

Base_Add::Base_Add(void)
{
&nbsp;&nbsp;printf("Base_Add");
}

Base_Add::~Base_Add(void)
{
&nbsp;&nbsp;&nbsp;printf("~Base_Add");
}

int Base_Add::Prin(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;printf("1111111111111111111");
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

class Adaptive_Add:public Base_Add
{
public:
&nbsp;&nbsp;&nbsp;&nbsp;Adaptive_Add(void);
&nbsp;&nbsp;&nbsp;&nbsp;~Adaptive_Add(void);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;virtual int Prin(void);

protected:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Base_Add *lock_;

};


Adaptive_Add::Adaptive_Add(void)
:lock_(0)
{
&nbsp;&nbsp;printf("Adaptive_Add");
}

Adaptive_Add::~Adaptive_Add(void)
{
&nbsp;&nbsp;printf("~Adaptive_Add");
}

int Adaptive_Add::Prin(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;this->lock_->Prin();
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}


int main(int agrc,char *argv[])
{
&nbsp;&nbsp;&nbsp;&nbsp;Adaptive_Add *text = new Adaptive_Add;
&nbsp;&nbsp;&nbsp;&nbsp;text->Prin();
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

我现在改成这样 怎么还是错误的啊?

[ 本帖最后由 flaght 于 2009-10-4 21:14 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-10-04 22:06 |只看该作者
int Adaptive_Add:rin(void)
{
    this->lock_->rin();
    return 0;
}

里面调用了lock_,而lock_是个NULL,所以是段错误。
注意55行
msingle 该用户已被删除
5 [报告]
发表于 2009-10-04 22:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2009-10-05 02:07 |只看该作者
this->Base_Add::Prin();
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP