OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3397|回复: 3

C++单基继承的基类成员初始化问题

[复制链接]

8

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-6-30
在线时间
10 小时
发表于 2016-7-6 00:22:36 | 显示全部楼层 |阅读模式
1金钱
问题代码:
[mw_shl_code=cpp,true]
#include "stdafx.h"
#include <iostream>
using namespace std;
//基类
class point{
private:
        int x;
        int y;
public:
        void setCoorVal(int a, int b)
        {
                x = a;
                y = b;
        }
        int getCoorX()
        {
                return x;
        }
        int getCoorY()
        {
                return y;
        }
};
//派生类
//class 派生类 :派生方式 基类
class point3D :public point
{
private:
        int z;
public:

        void setCoorZ(int c)
        {
                z = c;
        }
        int getCoorZ()
        {
                return z;
        }
        void printCoorVal()
        {        //派生类调用从基类继承的函数getCoorX()、getCoorY()
                cout << "x、y、z = " << getCoorX() << "、" << getCoorY() << "、" << getCoorZ() << endl;
        }
};


int _tmain(int argc, _TCHAR* argv[])
{
        int xVal, yVal;
        point *myPoint = new point;
        point3D *myPoint3D = new point3D;       
        //派生类调用从基类继承的函数setCoorVal()
        myPoint->setCoorVal(100, 200);
        myPoint3D->setCoorZ(300);
        myPoint3D->printCoorVal();

        while (1);
        return 0;
}
[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2016-6-30
在线时间
10 小时
 楼主| 发表于 2016-7-6 00:31:03 | 显示全部楼层
运行后显示的结果为:x、y、z = -8421504551、-8421504551、300
这并不是我想要的:x、y、z = 100、200、300
把53行代码改成:myPoint3D->setCoorVal(100, 200);
就可以得到我想要的结果:x、y、z = 100、200、300
我的理解是:定义一个派生类,必须要对基类的私有属性private成员进行初始化。否则基类的private属性的值就会是随机值
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2016-7-6 21:57:36 | 显示全部楼层
帮顶
回复

使用道具 举报

5

主题

163

帖子

0

精华

高级会员

Rank: 4

积分
615
金钱
615
注册时间
2011-11-7
在线时间
180 小时
发表于 2016-7-6 22:35:14 | 显示全部楼层
楼主这样定义不是相当于两个不同的类了吗,没初始化输出肯定是随机吧。
PS:不懂C++,单纯从C的角度去分析的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表