C++继承

简介: C++继承

C++继承

/*
继承允许我们依据另一个类来定义一个类,达到了重用代码功能和提高执行效率的效果
当创建一个类时,不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可
已有的类称为基类,新建的类称为派生类
// 基类
class Animal {
// eat() 函数
// sleep() 函数
};
//派生类
class Dog : public Animal {
// bark() 函数
};
一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。
定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名,形式如下:
class derived-class: access-specifier base-class
访问修饰符 access-specifier 是 public、protected 或 private 其中的一个
base-class 是之前定义过的某个类的名称
如果未使用访问修饰符 access-specifier,则默认为 private
*/
// 假设有一个基类 Shape,Rectangle 是它的派生类
#include <iostream>
using namespace std;
class Shape
{
public:
  void setLength(double len) { length = len; }
  void setWidth(double wid) { width = wid; }
  void setHeight(double hei) { height = hei; }
  // 成员
  double length;
  double width;
  double height;
};
class painCost
{
public:
  int getCost(double area)
  {
    cost = area * 10;
    return cost;
  }
  double cost;
};
/*
派生类可以访问基类中所有的非私有成员,即基类中的private成员不能在派生类中使用
当一个类派生自基类,该基类可以被继承为 public、protected 或 private 几种类型
即修饰符 access-specifier(几乎不使用 protected 或 private 继承,通常使用 public 继承)
公有继承(public):当一个类派生自公有基类时,
基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,
基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。
保护继承(protected): 当一个类派生自保护基类时,基类的公有和保护成员将成为派生类的保护成员。
私有继承(private):当一个类派生自私有基类时,基类的公有和保护成员将成为派生类的私有成员。
*/
class Rectangle:public Shape
{
public:
  int getVolume()
  {
    return length*width*height;
  }
  double getArea()
  {
    double Area = (length*height + length*width + width*height) * 2;
    return Area;
  }
};
/*
多继承:
C++ 类可以从多个类继承成员,即一个子类可以由父类
*/
class PainRectangle : public painCost, public Rectangle
{
public:
  double budget = 200;
  bool isInBudget()
  {
    if (cost > budget)
      return true;
    else
      return false;
  }
};
int main()
{
  Rectangle rec;
  rec.setLength(4);
  rec.setWidth(2);
  rec.setHeight(1);
  cout << "矩形的体积为:" << rec.getVolume() << endl;
  PainRectangle Prec;
  Prec.setLength(3);
  Prec.setWidth(2);
  Prec.setHeight(1);
  cout << "长方体的体积为:" << Prec.getVolume() << endl;
  cout << "长方体的表面积为:" << Prec.getArea() << endl;
  cout << "长方体表面涂漆需要花费:" << Prec.getCost(Prec.getArea()) << endl;
  if (Prec.isInBudget())
    cout << "花费为:" << Prec.cost << "\t预算为:" << Prec.budget << "\t超出预算" << endl;
  else
    cout << "花费为:" << Prec.cost << "\t预算为:" << Prec.budget << "\t没有超出预算" << endl;
  getchar();
  return 0;
}
目录
相关文章
|
5月前
|
编译器 C++
【C++】详解C++的继承
【C++】详解C++的继承
|
2月前
|
安全 程序员 编译器
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则
87 11
|
2月前
|
C++
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
C++番外篇——对于继承中子类与父类对象同时定义其析构顺序的探究
55 1
|
2月前
|
C++
C++番外篇——虚拟继承解决数据冗余和二义性的原理
C++番外篇——虚拟继承解决数据冗余和二义性的原理
42 1
|
2月前
|
安全 编译器 程序员
C++的忠实粉丝-继承的热情(1)
C++的忠实粉丝-继承的热情(1)
20 0
|
2月前
|
编译器 C++
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
C++入门11——详解C++继承(菱形继承与虚拟继承)-2
32 0
|
2月前
|
程序员 C++
C++入门11——详解C++继承(菱形继承与虚拟继承)-1
C++入门11——详解C++继承(菱形继承与虚拟继承)-1
35 0
|
3月前
|
C++
C++(二十)继承
本文介绍了C++中的继承特性,包括公有、保护和私有继承,并解释了虚继承的作用。通过示例展示了派生类如何从基类继承属性和方法,并保持自身的独特性。此外,还详细说明了派生类构造函数的语法格式及构造顺序,提供了具体的代码示例帮助理解。
|
3月前
|
C++
c++继承层次结构实践
这篇文章通过多个示例代码,讲解了C++中继承层次结构的实践应用,包括多态、抽象类引用、基类调用派生类函数,以及基类指针引用派生类对象的情况,并提供了相关的参考链接。
|
4月前
|
安全 Java 编译器