| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 411 人关注过本帖
标题:该程序如何实现返回值为 a 的 2 倍呢?
只看楼主 加入收藏
yangxiaoniu
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-5
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:5 
该程序如何实现返回值为 a 的 2 倍呢?
这是原题目:
#inc实现一个类A,在A中有两个私有的整型变量a和b,定义构造函数对a和b进行初始化,并实现成员函数geta()取得a的值和getb()取b的值。实现类B从A继承,覆盖geta(),使其返回a的2倍。主函数中声明类B对象,调用类B中的geta()并将结果输出。lude<iostream.h>
class A
{
private:
    int a;
    int b;
public:
    A(int aa,int bb):a(aa),b(bb)
    {}
     void geta() const
    {
        cout<<"a的值为:"<<a<<endl;
    }
    virtual void getb() const
    {
        cout<<"b的值为:"<<b<<endl;
    }
};

class B:public A
{
private:
    int c;
public:
    B(int aa,int bb,int cc):A(aa,bb),c(cc)
    {}
    void getc() const
    {
        cout<<"c的值为:"<<c<<endl;
        
    }
    void geta() const
    {
        cout<<"输出结果:"<<endl;
    }
};

void main()
{
    A *pa,myA(1,2);
    B myAA(3,5,9);

    pa=&myA;
    pa->geta();
    pa->getb();

    pa=&myAA;
    pa->geta();
    pa->getb();
    myAA.getc();

    myA.geta();
    myAA.geta();
}
搜索更多相关主题的帖子: private public 如何 
2014-11-26 10:16
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:4 
void有返回值吗?.


想返回两倍 就直接 return a<<1;   //a+a //a*2

hl928452957@gmail点com

2014-11-26 10:55
yangxiaoniu
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-11-5
收藏
得分:0 
回复 2 楼 stop1204
但是a是基类的私有成员呀,不可以直接在派生类中引用的
2014-11-26 13:01
xufan
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:232
专家分:804
注 册:2008-10-20
收藏
得分:4 
把基类的成员a定义为受保护就可以了哦。

~~~~~~我的明天我知道~~~。
2014-11-26 13:36
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
程序代码:
private:
    int a;
    int b;


改成

protected:
    int a;
    int b;


可以直接在派生类中调用了.

hl928452957@gmail点com

2014-11-26 16:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
按题目要求来做

程序代码:
class A
{
public:
    A( int aval, int bval ) : a(aval), b(bval)
    {
    }
    int geta() const
    {
        return a;
    }
    int getb() const
    {
        return b;
    }
private:
    int a;
    int b;
};

class B : public A
{
public:
    B( int aval, int bval ) : A(aval,bval)
    {
    }
    int geta() const
    {
        return A::geta() * 2;
    }
};

#include <iostream>
using namespace std;

int main()
{
    B b( 10, 100 );
    cout << b.geta() << endl;

    return 0;
}

2014-11-27 08:52
快速回复:该程序如何实现返回值为 a 的 2 倍呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030539 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved