get()中怎么调用buy(int money)中的money,这个const怎么用

#include
using namespace std;
class Product

{

public:

Product(string n,int p,int q); //构造函数

~Product(){}; //析构函数

void buy(int money) ; //购买产品

void get() const; //显示剩余产品数量

private:

string name; //产品名称

int price; //产品单价

int quantity; //剩余产品数量

};
Product::Product(string n,int p,int q)
{
name=n;
price=p;
quantity=q;
}
void Product::buy(int money)
{
cout<<"名称:"<<name<<",单价:"<<price<<endl;
cout<<"顾客使用"<<money<<",购买"<<money/price<<"台,";
cout<<"剩余"<<money-price*(money/price)<<"元"<<endl;
}
****_void Product::get() const
{

cout<<"产品:"<<name<<",单价:"<<price<<",剩余:"<<money<<"台"<<endl; 

}****_
int main()

{

Product p("Iphone6",99,20);

p.buy(10);

p.get();

cout<<"\n==========================\n"<<endl;

p.buy(1000);

p.get();

return 0;

}

c++

3个回答

void get() const;
表示这是一个常成员函数,内部不能修改成员变量

get仅仅是输出,所以不需要修改对象的任何状态。不知道你为什么要调用buy,还是仅仅输出money
你能说清楚么

dabocaiqq
请你们大家多多姿瓷我菠菜菌 正解,建议采纳,专家能回答下我的问题么
大约一个月之前 回复
函数定义加上
int money;

void Product::buy(int money)
{
this->money = money;
cout<<"名称:"<<name<<",单价:"<<price<<endl;
cout<<"顾客使用"<<money<<",购买"<<money/price<<"台,";
cout<<"剩余"<<money-price*(money/price)<<"元"<<endl;
}
void Product::get() const
{

cout<<"产品:"<<name<<",单价:"<<price<<",剩余:"<<money<<"台"<<endl; 
}

get和buy是两个不相关的函数,在逻辑上这两个函数是不相通的,在代码上想获取另一个值只能通过类变量,全局变量或者函数传参。
这里的const指的是函数执行后不修改类的变量。

按你的意思应该是计算buy以后剩余的商品数量并显示,那么当你执行了buy以后应该对类属性进行修改,要执行

void Product::buy(int money) {
    //那些输出
    quantity -= money/price;
}

这样剩余数量就存在quantity里了,get也就可以直接输出了

如果你想获得buy里面的money,可以给类添加变量存储money属值,调用buy后用该变量存储money,这里的lastMoney表示上一次money的值,这个方法和楼上的思路一样,不过我觉得不是这个问题的重点,因为采用上面buy函数的方法就足够了,而且这两个函数在逻辑上和现实中是不存在逻辑关系的,虽然可以这么写,但是是非常不建议的。

class Product {
public:
    ...
private:
    int lastMoney;
    ...
}
void Product::buy(int money){
    lastMoney = money; //存储上次调用money时的值
    //Todo
}
void Product::get() const {
    //调用lastMoney并计算
}
zqbnqsdsmd
zqbnqsdsmd 请管理员注意,JonathanYan的回答是抄袭我的。请第四次删除这个作弊的回答。
大约一个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!