标题:关于类的派生与构造函数的赋值虚函数调用的问题,希望各位帮忙看一下。
只看楼主
system3288
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:79
专家分:140
注 册:2010-10-9
结帖率:88.89%
已结贴  问题点数:20 回复次数:3 
关于类的派生与构造函数的赋值虚函数调用的问题,希望各位帮忙看一下。

#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
class Shape
{
public:
    Shape(){};
    ~Shape(){};
    virtual float GetArea()
    {
        return -1;
    }
};
class Circle:public Shape
{
    Circle(float radius):isRadius(radius){};
    ~Circle(){};
    virtual float GetArea()
    {
        return (3.14*isRadius*isRadius);
    }
private:
    float isRadius;
};
class Rectangle1:public Shape
{
    Rectangle1(float len,float idth):islenght(len),iswidth(idth){};
    ~Rectangle1(){};
    virtual float GetArea()
    {
        return islenght*iswidth;
    }
    float getlenght()
    {
        return islenght;
    }
    float getwidth()
    {
        return iswidth;
    }
private:
    float islenght;
    float iswidth;
};
class Square:public Rectangle1
{
public:
    Square(float len){};
    ~Square(){}
};
Square::Square(float len):Rectangle1(len,len)
{

}

int _tmain(int argc, _TCHAR* argv[])
{
    Shape *sp;
    sp=new Circle(5);
    printf("圆的面积为%f\n",sp->GetArea());
    delete sp;
    sp=new Rectangle1(4,6);
    printf("矩形的面积为:%f\n",sp->GetArea());
    delete sp;
    sp=new Shape(5);
    printf("正方形的面积是:%f\n",sp->GetArea());
    delete sp;
    system("pause");
    return 0;
}
运行之后错误一大堆。请各位帮忙看一下。都是些最简单最基础的,应该很容易看得出来。错误提示就没有贴出来了。希望各位看了之后指出错在哪里 ,谢谢。
搜索更多相关主题的帖子: 赋值 函数 派生 构造 
2010-10-30 14:25
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
得分:5 
这些错误LZ应该去看书。。根据错误提示自己找找。

离恨恰如春草,更行更远还生。
2010-10-30 16:08
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:15 
程序代码:
#include <iostream>
#include <windows.h>
using namespace std;
class Shape
{
public:
    Shape(){};
    ~Shape(){};
    virtual float GetArea()
    {
        return -1;
    }
};
class Circle:public Shape
{
public:
    Circle(float radius):isRadius(radius){};
    ~Circle(){};
    virtual float GetArea()
    {
        return (3.14*isRadius*isRadius);
    }
private:
    float isRadius;
};
class Rectangle1:public Shape
{
public:                       //类的默认访问权限是私有 故改为共有权限

    Rectangle1(float len,float idth):islenght(len),iswidth(idth){}  // 函数的后面为什么加分号
    ~Rectangle1(){}
    virtual float GetArea()
    {
        return islenght*iswidth;
    }
    float getlenght()
    {
        return islenght;
    }
    float getwidth()
    {
        return iswidth;
    }

    float islenght;
    float iswidth;
};
class Square:public Rectangle1  // 派生类不能访问继承类的私有成员
{
public:
    Square(float len);
    ~Square(){}
};
Square::Square(float len):Rectangle1(len,len)
{

}

int main( )
{
    Shape *sp;
    sp=new Circle(5);
    printf("圆的面积为%f\n",sp->GetArea());
    delete sp;
    sp=new Rectangle1(4,6);
    printf("矩形的面积为:%f\n",sp->GetArea());
    delete sp;
    sp=new Square(5);   
    printf("正方形的面积是:%f\n",sp->GetArea());
    delete sp;
    system("pause");
    return 0;
}
回去仔细看书去!!!!

If You Want Something, Go Get It, Period.
2010-10-30 16:28
system3288
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:79
专家分:140
注 册:2010-10-9
得分:0 
回复 3楼 m21wo
谢谢你哦,我的每个问题都是你解答出来的,嘿嘿。现在还没有书,等有书了,我一定好好看。再次谢谢。
2010-10-30 16:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-324468-1-1.html




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

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