查看完整版本: c++ 類別問題
頁: [1]

tim861121 發表於 2019-1-12 03:15 PM

c++ 類別問題

本帖最後由 tim861121 於 2019-1-12 03:16 PM 編輯

題目是 A類別計算金錢  B類別金錢到達即可優惠折扣
該如何把A算的值用在B類別裡面
#include <iostream>
using namespace std;
class a {
private:
        int x=0;
public:
        int t = 0;
        int sum() {
                cout << "選擇完輸入-1" << endl<<"1.小白菜 :20元" << endl;
                cout << "2.高麗菜:30元" << endl;                cout << "3.番茄:40元"<<endl;                while (1) {
                        cin >> x;
                        if (x == -1) {
                                break;
                        }if (x == 1) {
                                t+=20;
                        }if (x == 2) {
                                t+=30;
                        }if (x == 3) {
                                t+=40;
                        }
                }
cout << "總金額:" << t << endl;
                return 0;
        }
};
class b :public a{
private:
public:
        int rebate() {
                cout << "金額超過50元打5折" << endl;
                if (t == 50) {
                        t*0.5;
                }
                return 0;
        }
};
int main() {
        a asum;
        asum.sum();
        b bsum;
        bsum.rebate();
        return 0;
}
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

baepi 發表於 2019-1-12 11:55 PM

既然都繼承了....不是如下就可以了嗎?#include <iostream>
using namespace std;
class a {
private:
        int x = 0;
public:
        int t = 0;
        int sum()
        {
                t = 0;
                cout << "選擇完輸入-1" << endl << "1.小白菜 :20元" << endl;
                cout << "2.高麗菜:30元" << endl;
                cout << "3.番茄:40元" << endl;
                bool life_flag = true;
                while (life_flag)
                {
                        cin >> x;
                        switch (x)
                        {
                        case 1:
                                t += 20;
                                break;
                        case 2:
                                t += 30;
                                break;
                        case 3:
                                t += 40;
                                break;
                        default:
                                life_flag = false;
                                break;
                        }
                }
                cout << "總金額:" << t << endl;
                return 0;
        }
};
class b :public a {
private:
public:
        int rebate() {
                cout << "金額超過50元打5折" << endl;
                if (t >= 50)
                {
                        t *= 0.5;
                }
                cout << "最後確認總金額:" << t << endl;
                return 0;
        }
};
int main() {
        b bsum;
        bsum.sum();
        bsum.rebate();
        system("pause");
        return 0;
}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

liang628 發表於 2019-3-15 12:28 PM

在A類別中建立一個屬性名稱,把算好的值放入
b類別去繼承A類別就可以用A類別的屬性了

z1090128 發表於 2019-4-25 10:09 PM

繼承應該是可以直接使用才對,但private好像不行??

affkame 發表於 2019-6-5 04:36 PM

如果沒要overwrite 在a class 開一個public api把a.x的數值傳出來如何?<br><br><br><br><br><div></div>
頁: [1]