无敌太刀 发表于 2018-10-2 09:28:25

C++类与对象的一个小练习有问题······

本帖最后由 无敌太刀 于 2018-10-2 09:29 编辑

#include <bits/stdc++.h>
using namespace std;

class a                                                                               
{
        public:
                int e, f;
                int fun1(int x, int y)
                {                                                                                                                       
                        return x + y;
                }
        protected:
                int fun2(int x, int y)
                {
                        return x - y;
                }
        private:
                int fun3(int x, int y)
                {
                        return x * y;
                }
};

class b :public a
{
        public:
                int c=3;
                int fun4()
                {
                        return c + (e + f) / 2 +fun2(e,f);
                }
};

intmain()
{
        a lei1;
        b lei2;
        lei1.e = 1;
        lei1.f = 2;
        lei2.c = 3;
        cout << lei1.fun1(lei1.e, lei1.f) << endl;
        cout << lei2.fun4() << endl;
system("pause");
return 0;
}
为什么第二个输出结果是错误的?······

Mountain_gs 发表于 2018-10-2 17:49:17

lei2里面的e,f没赋值

无敌太刀 发表于 2018-10-2 18:41:19

Mountain_gs 发表于 2018-10-2 17:49
lei2里面的e,f没赋值

lei1.e = 1;
      lei1.f = 2;
可是我给lei1的e,f赋值了,lei1和lei2的e,f不是一个东西吗?······

claws0n 发表于 2018-10-2 22:45:44

无敌太刀 发表于 2018-10-2 18:41
可是我给lei1的e,f赋值了,lei1和lei2的e,f不是一个东西吗?······

lei2 是 class b,继承 class a。lei1 是实例化之后的对象,跟 lei2 完全没有关系了。你上面的 e, f 没有赋值,得到的是垃圾值。
页: [1]
查看完整版本: C++类与对象的一个小练习有问题······