`

C++继承

    博客分类:
  • C++
c++ 
阅读更多
// Console03.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class Animal
{
   public:
   void eat()
   {
          cout<<"animal eat"<<endl;
   }
   void sleep()
   {
          cout<<"animal sleep"<<endl;
   }
   void breathe()
   {
          cout<<"animal breathe"<<endl;
   }
  
};

class Fish:public Animal
{

};

void main()
{
   Animal an;
   an.eat();
   Fish fh;
   fh.sleep();

   int i;
   cin>>i;
}

和C#一样它是用冒号来继承
Fish从Animal派生而来
所以fh也可以调用sleep方法

运行结果为:
animal eat
animal sleep

----------------------------------------------------------------------------------

// Console03.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class Animal
{
   public:
   void eat()
   {
          cout<<"animal eat"<<endl;
   }
   protected:
   void sleep()
   {
          cout<<"animal sleep"<<endl;
   }
   void breathe()
   {
          cout<<"animal breathe"<<endl;
   }
  
};

class Fish:public Animal
{
  public:
  void test()
  {
  this->sleep();   //在子类里可以调用父类的protected方法
  }
};

void main()
{
   Animal an;
   an.eat();
   Fish fh;
  // fh.sleep();    这里的调用不成功,编译错误
   fh.test();
   int i;
   cin>>i;
}

现在把sleep和breathe方法设置为protected的了
这样在子类里能访问它们 但是在main函数里就没有权限调用了

--------------------------------------------------------------------------------

// Console03.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

class Animal
{
   public:
   void eat()
   {
          cout<<"animal eat"<<endl;
   }
   protected:
   void sleep()
   {
          cout<<"animal sleep"<<endl;
   }
   private:
   void breathe()
   {
          cout<<"animal breathe"<<endl;
   }
  
};

class Fish:public Animal
{
  public:
  void test()
  {
  this->sleep();
  this->breathe();
  }
};

void main()
{
   Animal an;
   an.eat();
   Fish fh;
  // fh.sleep();
   fh.test();
   int i;
   cin>>i;
}

现在把breathe设置为private的了
所以在子类中也访问不了breathe
发生编译错误





分享到:
评论

相关推荐

    C++继承与多态性实验报告

    ### C++继承与多态性实验报告知识点解析 #### 实验背景及目的 本实验旨在通过实际操作加深学生对C++面向对象编程的理解,特别是针对继承与多态性的概念进行深入学习。实验要求学生能够利用C++语言特性,设计并实现...

    c++继承的视频

    C++继承是面向对象编程(OOP)中的一个核心概念,它允许一个类(子类或派生类)从另一个类(基类或父类)继承特性,从而实现代码的重用和扩展。在Qt框架中,C++的继承机制同样被广泛应用,以构建丰富的用户界面和...

    C++继承与派生机制详解

    ### C++继承与派生机制详解 #### 一、引言 C++ 是一种支持面向对象编程的语言,其中继承机制是其重要的特性之一。通过继承,可以创建一个新类(称为派生类或子类),它继承了现有类(称为基类或父类)的所有属性和...

    C++继承与派生课件

    《C++继承与派生课件》 C++作为一门强大的面向对象编程语言,其核心概念之一就是继承与派生。这两个概念是实现代码复用和构建复杂对象模型的关键技术。继承允许创建一个新的类(派生类),它不仅包含原有类(基类)...

    c++继承中的内存布局

    ### C++继承中的内存布局详解 #### 1. 类如何布局? 在C++中,类的内存布局受到多个因素的影响,包括成员变量的类型、成员函数的存在与否、继承类型(如单继承、多重继承或虚继承)等。下面分别探讨不同情况下的类...

    c++继承分类

    C++继承是面向对象编程(OOP)中的一个核心概念,它允许我们创建新的类,这些新类可以扩展已存在的类的功能。在这个“c++继承分类”主题中,我们将深入探讨C++中的继承机制,以及如何在Qt环境中利用这一特性进行开发...

    08_31_C++ 继承的二义性

    08_31_C++ 继承的二义性08_31_C++ 继承的二义性08_31_C++ 继承的二义性08_31_C++ 继承的二义性08_31_C++ 继承的二义性08_31_C++ 继承的二义性08_31_C++ 继承的二义性08_31_C++ 继承的二义性08_31_C++ 继承的二义性08...

    c++继承中的三种访问权限.pdf

    c++继承中的三种访问权限 pdf,一个简单总结,方便查阅。

    c++继承与派生习题答案

    c++继承与派生习题答案 c++继承是面向对象编程(OOP)的一个基本概念,它允许一个类继承另一个类的成员变量和成员函数,从而实现代码的重用和继承。以下是c++继承与派生习题的答案: 1.概念填空题 1.1 三种派生...

    c++继承与派生

    C++继承与派生 本节课程主要介绍C++中继承与派生的概念和使用方法,包括公有继承、私有继承和保护继承等不同的继承方式。通过实验和实践,掌握继承与派生的基本概念和使用方法。 继承的概念 继承是面向对象编程中...

    C++继承与派生类实验报告

    C++继承与派生类是面向对象编程的重要概念,它们允许我们创建新的类,这些类可以从现有的类(称为基类或父类)继承属性和行为。在这个实验中,我们将深入理解这两个概念,并通过实际编程练习来巩固它们。 一、继承...

    c++继承描述

    c++继承描述

    C++继承共4页.pdf.zip

    C++继承是面向对象编程中的一个核心概念,它允许我们创建新的类,这些新类可以从已存在的类(称为基类或父类)中继承特性。继承的主要目的是代码重用和扩展,使得软件设计更加模块化,易于维护和升级。在这个"**C++...

    C++继承和派生实例

    入门基础实例 有关继承和派生的应用小程序 希望对大家有帮助

    c++继承与派生的相关资料

    C++的继承与派生是面向对象编程的重要概念,允许类之间的层次结构和代码复用。通过公有、私有和保护继承,可以控制成员的访问权限。派生类继承基类的特性,并可以添加新的成员和功能,同时需要处理构造函数和析构...

    C++继承与多态示例

    利用C++中的继承与多态,实验构造函数的作用

    C++继承与派生ppt

    很不错的C++课件,简单易懂,适合自学。深入浅出指点到位

    C++继承与多态性

    学习C++类的继承与多态详细全面易于理解的资料,从百度文库免费资源中获取。

Global site tag (gtag.js) - Google Analytics