14--6Shap类-----简单的继承

本文通过具体的代码示例介绍了如何使用虚函数实现不同形状类(包括圆、三角形和矩形)的面积和周长计算,并展示了如何利用虚函数简化多态的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般的做法,也可以说比较笨的做法。再没有学习虚函数之前,好像这样做还是挺好的

简单说就是用不同的函数名字。

 

#include <iostream>
#include<math.h>
#define pi  3.14159
using namespace std;
//一般的做法是在派生类函数中重新定义面积和周长函数
//方便区分:用不同的函数名字
class shape
{
    public:
      double area(){return 0;}
      double girth(){return 0;}
      void show()
      {
          cout<<"shape object:"<<endl;
      }
      private:

};


//圆类
class circle:public shape
{
    public:
     circle();
      double area();
      double girth();
      void show1();

      private:
       double r;
};

circle::circle()
{cout<<"输入圆形的半径:";
    cin>>r;
}
double circle::area()
{
    return pi*r*r;
}

double circle::girth()
{
    return 2*pi*r;
}
void circle::show1()
{   show();
    cout<<"圆.\n圆的半径是:"<<r<<"\n面积是:"<<area()<<"\n周长是:"<<girth()<<endl<<endl;
}
//三角形
class triangle :public shape
{
    public:
      triangle();
      double area();
      double girth();
      void show1();

      private:
      double a,b,c;
};

triangle::triangle()
{
    cout<<"输入三角形的三边长:";
    cin>>a>>b>>c;
    if(!(a+b>c&&a+c>b&&b+c>a))
    {
        cout<<"您输入三边无法组成三角形!请重新输入:";
        cin>>a>>b>>c;
    }
}

double triangle::area()
{
    double s;
    s=(a+b+c)/2;
    return sqrt(s*(s-a)*(s-b)*(s-c));
}

double triangle::girth()
{
    return a+b+c;
}

void triangle::show1()
{
    show();
    cout<<"三角形.\n三角形三边分别是:\n"<<a<<" "<<b
        <<" "<<c<<"\n面积是:"<<area()<<"\n三角形的周长是:"
        <<girth()<<endl<<endl;
}
//矩形
class rectangle:public shape
{
    public:
      rectangle();
      double area();
      double girth();
      void show1();

      private:
      double chang,kuan;
};
rectangle::rectangle()
{
    cout<<"输入矩形的长和宽:";
    cin>>chang>>kuan;
}

double rectangle::area()
{
    return chang*kuan;
}
double rectangle ::girth()
{
    return 2*(chang+kuan);
}
void rectangle::show1()
{
    show();
    cout<<"矩形.\n矩形的长和宽分别是:\n"<<chang<<" "
       <<kuan<<"\n面积是:"<<area()<<"\n矩形的周长是:"<<girth()<<endl<<endl;
}


/////////完毕/////下面是主函数/////////////////////

int main()
{
  circle c;
  triangle t;
  rectangle r;
  c.show1();
  t.show1();
  r.show1();


    return 0;
}

 

结果:


用虚函数,简单,方便,易懂:

 

#include <iostream>
#include<math.h>
#define pi  3.14159
using namespace std;

class shape
{
public:
    //将面积和周长函数声明为纯虚函数
    virtual double area()
    {
        return 0.0;
    };
    //周长
    virtual double girth()
    {
        return 0.0;
    };
    virtual void show()
    {
        cout<<"shape object:"<<endl;
    }
private:

};


//圆类
class circle:public shape
{
public:
    circle();
    virtual double area();
    virtual double girth();
    virtual void show();

private:
    double r;
};

circle::circle()
{
    cout<<"输入圆形的半径:";
    cin>>r;
}
double circle::area()
{
    return pi*r*r;
}

double circle::girth()
{
    return 2*pi*r;
}
void circle::show()
{
    //show();
    cout<<"圆.\n圆的半径是:"<<r<<"\n面积是:"<<area()<<"\n周长是:"<<girth()<<endl<<endl;
}
//三角形
class triangle :public shape
{
public:
    triangle();
    virtual double area();
    virtual  double girth();
    virtual void show();

private:
    double a,b,c;
};

triangle::triangle()
{
    cout<<"输入三角形的三边长:";
    cin>>a>>b>>c;
    if(!(a+b>c&&a+c>b&&b+c>a))
    {
        cout<<"您输入三边无法组成三角形!请重新输入:";
        cin>>a>>b>>c;
    }
}

double triangle::area()
{
    double s;
    s=(a+b+c)/2;
    return sqrt(s*(s-a)*(s-b)*(s-c));
}

double triangle::girth()
{
    return a+b+c;
}

void triangle::show()
{
    //show();
    cout<<"三角形.\n三角形三边分别是:\n"<<a<<" "<<b
        <<" "<<c<<"\n面积是:"<<area()<<"\n三角形的周长是:"
        <<girth()<<endl<<endl;
}
//矩形
class rectangle:public shape
{
public:
    rectangle();
    virtual  double area();
    virtual  double girth();
    virtual  void show();

private:
    double chang,kuan;
};
rectangle::rectangle()
{
    cout<<"输入矩形的长和宽:";
    cin>>chang>>kuan;
}

double rectangle::area()
{
    return chang*kuan;
}
double rectangle ::girth()
{
    return 2*(chang+kuan);
}
void rectangle::show()
{
    //show();
    cout<<"矩形.\n矩形的长和宽分别是:\n"<<chang<<" "
        <<kuan<<"\n面积是:"<<area()<<"\n矩形的周长是:"<<girth()<<endl<<endl;
}


/////////完毕/////下面是主函数/////////////////////

int main()
{
    circle c;
    triangle t;
    rectangle r;
    /*
     cout<<"\n\n***************派生类对象圆点指依次输出各对象的信息***************";
    c.show();
    t.show();
    r.show();*/
    cout<<"\n\n***************用基类指依次输出各对象的信息***************\n\n";
    shape *ptr;

    ptr=&c;
    ptr->show();

    ptr=&t;
    ptr->show();

    ptr=&r;
    ptr->show();



    return 0;
}

结果:

 

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在本文中,我们将探讨如何通过 Vue.js 实现一个带有动画效果的“回到顶部”功能。Vue.js 是一款用于构建用户界面的流行 JavaScript 框架,其组件化和响应式设计让实现这种交互功能变得十分便捷。 首先,我们来分析 HTML 代码。在这个示例中,存在一个 ID 为 back-to-top 的 div 元素,其中包含两个 span 标签,分别显示“回到”和“顶部”文字。该 div 元素绑定了 Vue.js 的 @click 事件处理器 backToTop,用于处理点击事件,同时还绑定了 v-show 指令来控制按钮的显示与隐藏。v-cloak 指令的作用是在 Vue 实例渲染完成之前隐藏该元素,避免出现闪烁现象。 CSS 部分(backTop.css)主要负责样式设计。它首先清除了一些默认的边距和填充,对 html 和 body 进行了全屏布局,并设置了相对定位。.back-to-top 则定义了“回到顶部”按钮的样式,包括其位置、圆角、阴影、填充以及悬停时背景颜色的变化。此外,与 v-cloak 相关的 CSS 确保在 Vue 实例加载过程中隐藏该元素。每个 .page 代表一个页面,每个页面的高度设置为 400px,用于模拟多页面的滚动效果。 接下来是 JavaScript 部分(backTop.js)。在这里,我们创建了一个 Vue 实例。实例的 el 属性指定 Vue 将挂载到的 DOM 元素(#back-to-top)。data 对象中包含三个属性:backTopShow 用于控制按钮的显示状态;backTopAllow 用于防止用户快速连续点击;backSeconds 定义了回到顶部所需的时间;showPx 则规定了滚动多少像素后显示“回到顶部”按钮。 在 V
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值