当前位置: 首页 > wzjs >正文

沪佳家装和沪尚茗居哪个好北京网站优化效果

沪佳家装和沪尚茗居哪个好,北京网站优化效果,上海公司排行榜,免费做网站网站有人哪些目录 继承基本概念 编程示例 1.基类(父类)Person 代码特点说明 权限对类的影响 ​编辑 编程示例 1. 公有继承 (public inheritance) 2. 保护继承 (protected inheritance) 3. 私有继承 (private inheritance) 重要规则 实际应用 继承基本概…

目录

继承基本概念

编程示例

1.基类(父类)Person

代码特点说明

权限对类的影响

​编辑

编程示例 

1. 公有继承 (public inheritance)

2. 保护继承 (protected inheritance)

3. 私有继承 (private inheritance)

重要规则

实际应用


继承基本概念

继承是面向对象编程(OOP)中的一个核心概念,特别是在C++中。它允许一个类(称为派生类或子类)继承另一个类(称为基类或父类)的属性和方法。继承的主要目的是实现代码重用,以及建立一种类型之间的层次关系。

特点

1. 代码重用:子类继承了父类的属性和方法,减少了代码的重复编写。

2. 扩展性:子类可以扩展父类的功能,添加新的属性和方法,或者重写(覆盖)现有的方法(属性不能被重写或覆盖)。

3. 多态性:通过继承和虚函数,C++支持多态,允许在运行时决定调用哪个函数。

编程示例

C++中类的继承机制,定义了一个基类(Person)和两个派生类(Student和Teacher)。

基类(父类)Person

以下使用一个编程案例体验一下继承,如有一个 Person(表示人的基本信息)类,包含两个成员变量:name 和 age。创建两个 Student 和 Teacher 类,分别表示学生和老师。众所周知,不管是老师还是学生都是人,都有名字和年龄。如果给这两个类都声明成员变量: name 和 age ,就会显得繁琐,这里就可以使用继承,将 Person 作为父类,Student 和 Teacher 作为子类并且用公有权限继承 Person(父类),使 Student 和 Teacher 可以使用 Person 类里的成员变量,减少代码的重复编写。

#include <iostream>
#include <string>using namespace std;  // 使用标准命名空间// 基类(父类)Person - 表示人的基本信息
class Person
{
public:  // 公有访问权限string name;  // 姓名属性int age;      // 年龄属性
};// 派生类(子类)Student - 继承自Person类,表示学生
class Student : public Person  // 公有继承方式
{
public:string occupation;  // 学生特有的职业属性// 打印学生信息的方法void printfStudentMsg(){// 可以访问从Person继承的name和age,以及自身的occupationcout << "职业:" << occupation << ",姓名:" << name << ",年龄:" << age << endl;}
};// 派生类(子类)Teacher - 继承自Person类,表示教师
class Teacher : public Person  // 公有继承方式
{
public:string occupation;  // 教师特有的职业属性// 打印教师信息的方法void printfTeacherMsg(){// 可以访问从Person继承的name和age,以及自身的occupationcout << "职业:" << occupation << ",姓名:" << name << ",年龄:" << age << endl;}
};int main()
{// 创建Student对象Student stu;// 设置学生属性stu.name = "李白";         // 设置继承自Person的name属性stu.age = 18;              // 设置继承自Person的age属性stu.occupation = "学生";    // 设置Student特有的occupation属性stu.printfStudentMsg();     // 调用Student的打印方法// 创建Teacher对象Teacher t;// 设置教师属性(修正了原始代码中的错误赋值)t.name = "张三";           // 设置继承自Person的name属性t.occupation = "教师";     // 设置Teacher特有的occupation属性t.age = 26;                // 设置继承自Person的age属性t.printfTeacherMsg();       // 调用Teacher的打印方法return 0;
}
代码特点说明
  1. 继承关系

    • Person是基类,包含人的基本属性(name和age)

    • StudentTeacher是派生类,通过公有继承(public Person)获得Person的所有public成员

  2. 派生类特点

    • 继承了基类的所有public成员(name和age)

    • 添加了自己的特有成员(occupation)

    • 定义了自己的成员函数(printfStudentMsg和printfTeacherMsg)

  3. 公有继承(public inheritance)特点:

    • 基类的public成员在派生类中仍然是public

    • 基类的protected成员在派生类中仍然是protected

    • 基类的private成员在派生类中不可直接访问

权限对类的影响

C++中,访问控制符对继承的影响可以通过下表来清晰地展示。这个表格展示了不同类型的继承( public protected private )如何影响基类的不同类型成员( public protected 、private )在派生类中的访问级别。

解释:

public 继承:基类的 public 成员在派生类中仍然是 public 的, protected 成员仍然是 protected 的。基类的 private 成员在派生类中不可访问。

protected 继承:基类的 public protected 成员在派生类中都变成 protected 的。基类的 private 成员在派生类中不可访问。

private 继承:基类的 public protected 成员在派生类中都变成 private 的。基类的 private 成员在派生类中不可访问。

这个表格提供了一个快速参考,帮助理解在不同类型的继承中基类成员的访问级别是如何变化的。记住,无论继承类型如何,基类的 private 成员始终不可直接在派生类中访问。

访问权限回顾

编程示例 

#include <iostream>
using namespace std;
//基类,父类
class Vehicle{ //交通工具,车,抽象的概念
public:string type;string contry;string color;double price;int numOfWheel;
protected:int protectedData;
private:int privateData;
public:void run(){cout << "车跑起来了" << endl;}void stop();
};
//私有继承测试
class TestClass : private Vehicle{
public:void tsetFunc(){price = 10; //基类的公有数据被私有继承后,在派生类中权限编程私有,只限在类内部使用}
};
//公有继承测试
class Truck : protected Vehicle{
public:void testFunc(){type = "数据测试"; //保持私有权限protectedData = 10; //保持私有权限privateData = 10; //报错了,基类的私有成员,不管哪种方式的继承都是不可访问的。}
};
//公有继承,基类的公有权限和保护权限不变,私有成员不能访问
class Bickle : public Vehicle{
public:void testFunc(){protectedData = 10;}
};
//派生类,子类
class Roadster : public Vehicle{ //跑车,也是抽象,比父类感觉上范围缩小了点
public:int stateOfTop;void openTopped();void pdrifting();
};
int main()
{TestClass test;test.price = 3.3; //报错了,基类的公有成员被私有继承后,降为私有权限Truck t;t.type = "测试"; //报错了,基类的公有成员被保护继承后,降为保护权限t.protectedData = 10; //从报错信息看出,保护继承造成基类的保护成员还是保持保护权限Roadster ftype;ftype.type = "捷豹Ftype";ftype.run();Bickle bike;bike.type = "死飞";bike.run();return 0;
}

1. 公有继承 (public inheritance)

class Roadster : public Vehicle
class Bickle : public Vehicle

特点:

  • 基类的public成员在派生类中保持public

  • 基类的protected成员在派生类中保持protected

  • 基类的private成员在派生类中不可访问

例子中Bickle类的testFunc()可以访问基类的protected成员protectedData

2. 保护继承 (protected inheritance)

class Truck : protected Vehicle

特点:

  • 基类的public和protected成员在派生类中都变为protected

  • 基类的private成员在派生类中不可访问

所以在Truck类外部:

Truck t;
t.type = "测试"; // 错误,type现在是protected
t.protectedData = 10; // 错误,protected成员不能在类外访问

3. 私有继承 (private inheritance)

class TestClass : private Vehicle

特点:

  • 基类的public和protected成员在派生类中都变为private

  • 基类的private成员在派生类中不可访问

所以在TestClass类外部:

TestClass test;
test.price = 3.3; // 错误,price现在是private

重要规则

  1. 无论哪种继承方式,基类的private成员在派生类中都不可直接访问

  2. 继承方式决定了基类成员在派生类中的访问权限:

    • 公有继承:保持原权限

    • 保护继承:public→protected

    • 私有继承:public/protected→private

实际应用

  • 公有继承是最常用的,表示"是一个"的关系

  • 保护继承和私有继承较少使用,通常用于实现细节的隐藏

  • 在派生类内部,可以访问基类的public和protected成员(取决于继承方式)

虚函数

http://www.dtcms.com/wzjs/289644.html

相关文章:

  • 17一起做网站童装阿里云域名购买
  • 织梦图片网站百度指数怎么刷指数方法
  • 上海工信部网站windows7系统优化工具
  • 给别人网站做跳转百度推广非企代理
  • 自适应网站建设上海seo网站推广公司
  • 美国政府网站建设如何搭建一个网站
  • 山东做网站的公司互联网营销师培训班
  • 南通做网站的花云东莞网站建设哪家公司好
  • 个人网站作品企业营销战略
  • 网站到期忘记续费seo推广要多少钱
  • 苏州招聘网站建设巨量算数官方入口
  • 做软件需要网站有哪些百度问答下载安装
  • 丹东建设安全监督网站搜索引擎有哪些网站
  • 建站 网站程序有哪些哪家建设公司网站
  • 宁波网站建设培训哪家好株洲网站设计
  • 用asp做宠物网站页面淘宝关键词查询工具哪个好
  • 网站建设前期分析b站推出的短视频app哪个好
  • ip开源网站FPGA可以做点什么怎么做好网络推广销售
  • 郑州低价网站制作搜索引擎优化是什么意思
  • 成都网站建设四川冠辰seo查询官方网站
  • 宁波seo营销
  • 百度网站小程序怎么做网络营销章节测试答案
  • 网站建设公司注册想做百度推广找谁
  • 成人做暧视频观看网站网络广告的形式有哪些?
  • 怎么进入wordpress后台改苏州关键词优化搜索排名
  • 品牌网站建设源码seo下载站
  • 自适应型网站建设多少钱郑州网站优化哪家好
  • 宜兴做网站的公司有哪些女生学电子商务好吗
  • 建设网站需要的ftp资源谷歌seo公司
  • 自己做的网站竞价优化武汉seo建站