注册 登录
编程论坛 C++教室

请帮我看看为啥赋不了值

gobraves 发布于 2014-05-08 22:46, 609 次点击
程序代码:

#include<iostream>
#include<string>
using namespace std;

class Employee
{
public:
    Employee(string nam,string n):name(nam),num(n)
    {
        grade=1;
        wage=0;
    }
protected:
    string name;
    string num;
    int grade;
    double wage;
};

class Technician:virtual public Employee
{
private:
    int hour;
public:
    Technician(string nam,string n,int h):Employee(nam,n)
    {
        hour = h;
        grade = 3;
        wage =100*h;
    }
    void show_T();
    void get_T();
};

void Technician::show_T()
{
    cout<<"name:"<<name<<endl;
    cout<<"num:"<<num<<endl;
    cout<<"grade:"<<grade<<endl;
    cout<<"wage:"<<wage<<endl;
}

void Technician::get_T()
{
    cin>>hour;
}

int main()
{
    Technician t("t","2",100);
    t.get_T();                                  //我在这里对hour赋值为4,但为啥不起作用
    t.show_T();
    return 0
}


对hour赋值后不起作用,请各位指点下
9 回复
#2
funyh2502014-05-08 23:17
你瞧瞧函数的返回值
#3
gobraves2014-05-09 06:32
回复 2 楼 funyh250
这个应该与返回值没关系吧,我是通过成员函数直接对成员变量进行修改
#4
rjsp2014-05-09 08:20
起作用了呀,为什么说不起作用?
#5
gobraves2014-05-09 09:20
回复 4 楼 rjsp
举个例子,我输入4,那么hour就会变成4,wage就会变成400,可是输出的hour依然是100,wage依然是10000……
#6
rjsp2014-05-09 10:30
举个例子,我输入4,那么hour就会变成4wage就会变成400可是输出的hour依然是100,wage依然是10000……
------ 蓝色部分是正确的,你可以输出hour看看
       粉红色部分不知道你这么想的,涉及到hour的语句就三条,int hour;hour = h;cin>>hour;凭什么你改了hour就能让wage变化,太神奇了吧?!
       红色部分在瞎扯蛋,你的代码中根本就没输出过hour,怎么能说『可是输出的hour依然是100』?!
#7
jansonying2014-05-09 13:14
测试后如下:  输入4 回车   4
                          name: t
                          num : 3
                          grade:3

                          wage: 10000
#8
jansonying2014-05-09 13:23
回复 5 楼 gobraves
代码里 hour 没看出改变了啊   输入4   输出还是4啊
#9
gobraves2014-05-09 16:19
回复 6 楼 rjsp
额,我知道了,我的wage=100*h,h的值没改变,我一直当成wage=100*hour了……
#10
gobraves2014-05-09 16:26
回复 6 楼 rjsp
额,也不是刚说的问题。当时写的时候应该是思路混乱了,把构造函数当成了普通函数在用,希望通过修改hour的值,然后根据构造函数中的wage=100*h,修改wage的值……谢谢你的回答
1