2015-04-12 57 views
-4
#include<iostream.h> 
#include<conio.h> 
#include<stdio.h> 
class employee 
{ 
protected: 
    char nm[30]; 
    float sal; 
}; 
class manager:public employee 
{ 
protected: 
    char dep[10]; 
public: 
    void input(); 
    void disp(); 
}; 
void manager::input() 
{ 
    cout<<"enter name"; 
    gets(nm); 
    cout<<"enter salary"; 
    cin>>sal; 
    cout<<"enter dep"; 
    gets(dep); 
} 
void manager::disp() 
{ 
    cout<<endl<<"manager name:"<<nm<<endl; 
    cout<<"salary:"<<sal<<endl; 
    cout<<"deptmt:"<<dep<<endl; 
} 
class executive:public manager 
{ 
public: 
    void disp(); 
}; 
void executive::disp() 
{ 
    cout<<endl<<"executive"<<endl; 
    manager::disp(); 
} 
int main() 
{ 
    manager m1; 
    m1.input(); 
    executive e; 
    m1.disp(); 
    e.disp(); 
    return 0; 
} 

的代码看起来运行良好...但它显示垃圾值EXECUTIV的显示,即使显示和管理的输入做得很好。请告诉我代码的问题。程序正在运行,但导致垃圾值执行显示

+0

你应该添加你的意思是“垃圾”,你认为应该是正确的。 – Hurkyl

+3

你有一些非常讨厌的固定大小的数组,并且使用邪恶的'gets'来写入(也许超出)它们。使用C++字符串和本世纪的编译器;并格式化代码,以便其他人可以舒适地阅读它。 –

+0

你听说过代码缩进吗?让代码易读是一件新事物 –

回答

2

您忘记了e.input()。顺便说一句,你通常应该使用std::string而不是char的数组;众多优点中是没有明确的构造函数调用,std::string将建设为空字符串默认值,而char[N]将包含N未初始化char值—就是垃圾