C++ 类指针 作用域和局部变量的问题

[复制链接]
查看11 | 回复2 | 2011-8-17 17:12:21 | 显示全部楼层 |阅读模式
类的定义就不复制出来了
void main()
{
        employee *head , *p ;
        head = p = NULL ;
        char a = 'a';
        while( a!= '0')
        {
                cout > a ;
                cout > number >> name >> telephone >> salary ;
        manager A( number , name , telephone , salary );
        if( p != NULL )
        {
                p->next = &A ;
        }
        p = &A ;
        return p ;
}

回复

使用道具 举报

千问 | 2011-8-17 17:12:21 | 显示全部楼层
看代码,似乎想通过输入,创建一个链表。在C中,需要在堆里申请内存,然后指针指向堆里的地址。不要在栈上申请内存。如果在栈上申请内存,函数调用完毕,内存就被释放了。内存申请,需要手动去。比如用malloc,或者用new, 用完记得释放。关键在:p = input1( p ) ; 在这个函数中,需要申请内存。...
回复

使用道具 举报

千问 | 2011-8-17 17:12:21 | 显示全部楼层
这个问题是因为你使用了局部作用域的类的地址不是像你说的全部初始化了而是由于局部作用域中的manager A脱离了作用域后被自动析构了在原来位置上的值都是未定义的相当于你在main函数中定义一个Int,但不给它赋值,你调试的时候你就会发现这个int的值很奇怪解决的方法就是用new申请分配内存块既然你说基类是纯虚的,那么就用new man...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行