C++中的继承、以及赋值兼容转换。

这篇具有很好参考价值的文章主要介绍了C++中的继承、以及赋值兼容转换。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、继承的概念及定义

继承可以使代码复用,允许在保持原有类特性的基础上进行扩展。

举个例子:就好比我现在要封装老师、学生等这些人的属性和方法,但是这些人都有重复的属性和方法,比如name、age、sex等等,那么我可以封装一个人的属性和方法,然后我用老师、学生的类去继承人这个类,他们的类里面都有了共同的属性和共用的方法,不用再去每个类里面分别写了。

继承是类设计层次的复用,之前接触到的复用都是函数复用。

代码解释如下:

我写了一个 Person 的类,然后老师、学生再去继承这个 Person 类,就不用在老师和学生的里面再写相同的属性和方法。

#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;

class Person
{
public:
	void Print()
	{
		cout << "name:" << _name << endl;
		cout << "age:" << _age << endl;
	}

	string _name = "person";
	int _age = 18;
};


class student : public Person
{
public:
	int _student_id;
};


class teacher : public Person
{
public:
	int _job_number;
};


int main()
{
	student s;
	teacher t;
	s._name = "赵三";
	s._age = 19;
	s._student_id = 01;
	s.Print();

	t._name = "张老师";
	t._age = 25;
	t._job_number = 0001;
	t.Print();



	return 0;
}

C++中的继承、以及赋值兼容转换。 

上面写的 teacher 和 student 继承了 Person 类,都是用类里面的权限访问限定符中的 public,那么为什么要用 public 继承?

C++中的继承、以及赋值兼容转换。

访问限定符的访问方式变化:

类成员/继承方式

public继承

protected继承

private继承

基类的public成员

派生类的public成员

派生类的protected成员

派生类的private成员

基类的protected成员

派生类的protected成员

派生类的protected成员

派生类的private成员

基类的private成员

在派生类中不可见

在派生类中不可见

在派生类中不可见

 总结:

class 中默认继承方式是 private;struct 中默认继承方式是 public(和类中的默认权限一样)

父类成员在子类的访问方式 = min(成员在基类的访问限定符,继承方式)

public > protected > private 

二、基类和派生类对象赋值兼容转换。

1. 子类的对象 可以给 父类的对象/指针/引用。(切片)

2. 基类对象不能赋值给子类对象。

3. 基类的指针/引用可以赋值给子类的指针/引用(需要C++11中强转类型)

#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;

class Person
{
public:
	void Print()
	{
		cout << "name:" << _name << endl;
		cout << "age:" << _age << endl;
	}

	string _name = "person";
	int _age = 18;
};


class student : public Person
{
public:
	int _student_id;
};


class teacher : public Person
{
public:
	int _job_number;
};

void func(Person& p)
{
	p.Print();
}

int main()
{
	student s;
	teacher t;

	func(s);
	func(t);


	return 0;
}

画图解释一下切片,如下:

C++中的继承、以及赋值兼容转换。文章来源地址https://www.toymoban.com/news/detail-450832.html

到了这里,关于C++中的继承、以及赋值兼容转换。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】C++中的继承

    继承 机制是面向对象程序设计 使代码可以复用 的最重要的手段,它允许程序原在 保持原有类特性的基础上进行扩展 ,增加功能,这样产生新的类,称为 派生类 。继承 呈现了面向对象程序设计的层次结构 ,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复

    2024年02月03日
    浏览(38)
  • C++好难(8):C++中的继承

    目录 1.继承的概念及定义 🍉继承的概念 🍉 继承的定义: 🍒格式定义:  🍒继承关系和访问限定符 🍒继承基类成员访问方式的变化 2.基类和派生类对象赋值转换 3.继承中的作用域: 4.派生类的默认成员函数 5.继承与友元 6.继承与静态成员  7.复杂的菱形继承记菱形虚拟继

    2024年02月13日
    浏览(32)
  • 【C++】继承 ⑦ ( 继承中的对象模型分析 | 继承中的构造函数和析构函数 )

    下面有 3 个类 , 分别是 A 类 , B 类 , C 类 ; A 类是 基类 ; B 类 公有继承 A 类 , 并定义了新的 成员变量 y ; C 类 公有继承 B 类 , 并定义了新的 成员变量 z ; 分别定义上述 3 个类的对象 , 上述 3 个对象的内存模型如下 : A 类对象 objA 中有一个成员 int x , 在内存中只有一个 int 类型的

    2024年02月08日
    浏览(51)
  • C++中的继承(一)

    我们之前说过,继承是面向对象的三大特性。 面向对象的三大特性: 封装、继承、多态。 封装在类和对象体现出。 继承是什么? 继承就是一种类层次的复用,复用就是你的就变成我的. 假设我要实现一个管理系统。 如果按照以前类和对象的方式,单独去实现这个类是很坑的.

    2024年02月03日
    浏览(30)
  • C++中的继承(二)

    上一篇文章我们C++的正常继承其实已经讲完了,但是后面还有一个大坑。 实际当中继承有单继承和多继承。 单继承就是直接继承一个类。 只有一个直接父类的就叫做单继承。 如果是单继承那就比较简单。 现实世界除了有单继承还有多继承。 多继承就是我一个类我具备另外

    2024年02月04日
    浏览(26)
  • C++实战Opencv第二天——色彩空间转换函数和opencv中图像对象创建与赋值(从零开始,保姆教学)

    OpenCV是一个强大的计算机视觉库,使用C++作为主要编程语言,对于图像处理和计算机视觉领域具有重要意义。其提供了丰富的功能和算法,使得开发者能够快速实现各种图像处理和计算机视觉应用。OpenCV C++为图像处理和计算机视觉领域的开发者提供了一个高效、稳定的工具。

    2024年02月20日
    浏览(40)
  • C++中的继承和派生

    C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheri tan ce) 可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。 在C++中,

    2024年02月10日
    浏览(38)
  • C++中的继承(超详细)

    继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复

    2024年02月07日
    浏览(27)
  • C++ 中的继承和多态

    继承允许我们 依据一个类来定义另一个类 ,这使得创建和维护一个应用程序变得更容易。这样做也达到了重用代码功能和提高执行效率的效果。 派生类的成员可以直接访问基类的保护成员(protected),但不能直接访问基类的私有成员(private) 。不过需要注意的是,派生类

    2024年02月06日
    浏览(39)
  • 【C++进阶之路】第一篇:C++中的继承

    🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C++学习与应用】 ✒️✒️本篇内容:继承的基础概念,定义方法,基类和派生类的转换,继承中类的作用域,什么是隐藏,派生类和默认成员函数,继承和友元,继承与静态函数,菱形继承和虚拟继承,菱形继承总结

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包