C++如何让自己变得富有?

这篇具有很好参考价值的文章主要介绍了C++如何让自己变得富有?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++如何让自己变得富有?,C++,c++,开发语言,c语言

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻强烈推荐优质专栏: 🍔🍟🌯C++的世界(持续更新中)
🐻推荐专栏1: 🍔🍟🌯C语言初阶
🐻推荐专栏2: 🍔🍟🌯C语言进阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:讲解C++中有关继承的概念.
金句分享:
✨那些看似不起波澜的日复一日会在某一天,让你看到坚持的意义!✨

前言

本篇只是介绍了C++中继承的一部分简单知识,继承的概念,继承的格式,继承方式等,
对于复杂的多继承,菱形继承,下一篇会介绍.

虽然我没有财富,但是,我爸有,他给我留下了巨大的财富,我如果不好好学习,就只能回去继承亿万家产了.
(讲个笑话,不要当真.)
C++如何让自己变得富有?,C++,c++,开发语言,c语言
C++中的继承是什么呢?

一、继承介绍:

C++中的继承是面向对象编程中的一个重要概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的公共数据和函数成员。子类可以使用父类的数据和函数,同时也可以添加自己的数据和函数,将父类的功能扩展为更具体和特定的功能,使代码更加模块化和易于维护。

C++中,通过在子类定义中使用关键字“public”、“private”和“protected”来实现对继承的访问控制。三种方式,具体介绍在下面讲解.

C++中的继承是面向对象编程的重要特性之一,它允许一个类继承另一个类的属性和方法。被继承的类称为基类或父类,继承的类称为派生类或子类。

C++如何让自己变得富有?,C++,c++,开发语言,c语言

二、继承的格式:

派生类 +: +继承方式+基类

C++如何让自己变得富有?,C++,c++,开发语言,c语言

继承的初步体验:

#include <iostream>
using namespace std;

class People//基类
{
public:
	People(string name="cjn",int age=20)
		:_name(name)
		,_age(age)
	{
		cout << "People()" << endl;
	}

	void who(){
		cout << _name << endl;
		cout << _age << endl;

	}
protected:
	string _name;
	int _age;
};

class Student:public People		//派生类1 继承People类
{
public:
	Student(int sno= 20216868)
		:_sno(sno)
	{
		cout << "Student()" << endl;
	}
	void test(){
		//可以访问基类的protect成员
		_name = "王五";
		_age = 66;
	}
protected:
	int _sno;
};

class Teacher:public People
{
public:
	Teacher(string course ="Chinese")
		:People("wang wu",18)		//显示调用了基类的构造函数
		,_course()
	{
		cout << "Teacher()" << endl;
	}
protected:
	string _course;
};


int main()
{
	People p1("zhang san",25);
	p1.who();
	cout << endl;

	Student s1(20216666);
	s1.who();					//虽然Student类中并没有who方法,但是,Studen类继承了People类,在People类中定义了who方法
	cout << endl;

	Teacher t1("Physics");
	t1.who();					//虽然Teacher类中并没有who方法,但是,Teacher类继承了People类,在People类中定义了who方法
	cout << endl;


	return 0;
}

运行结果:

People()
zhang san
25

People()
Student()
cjn
20

People()
Teacher()
wang wu
18

分析:
虽然两个派生类中并没有实现who方法,但是它们都继承了People类,所以,可以使用People的成员和方法.
那为啥,输出的结果不一样呢?
1)因为在创建People类时,已经传参初始化了,People p1("zhang san",25);.

2)在创建Student类时,并没有为People传参赋值,所以这里编译器会采用People类的默认构造.
C++如何让自己变得富有?,C++,c++,开发语言,c语言

3)Teacher类中,显示调用了基类的构造函数,People("wang wu",18)

三、继承方式

继承方式有三种:
(1) “public”(公有继承:表示父类的公共成员在子类中仍然是公共的,可以直接访问;
(2)“private”(私有继承):表示父类的私有成员在子类中无法直接访问,只能通过父类提供的函数访问;
(3)“protected”(保护继承):表示父类的保护成员在子类中可以直接访问。

同样,类中成员的访问限定符也有三种:
(1)public(公有成员变量).
(2)private(私有成员变量)
(3)protected(保护成员变量)

继承方式与限定符 基类与派生类权限一览表
C++如何让自己变得富有?,C++,c++,开发语言,c语言
千万不要去背表格中的内容,不仅难背,还容易忘记.

总结一下很好理解的:

private<protected<public

权限=min(在基类的访问限定符,继承方式)

例外:(private无论何种继承方式都是在派生类中不可见)
这里需要注意的是,虽然在派生类中不可见,但也是被继承下来了.
如何证明也被继承下来了?

class People
{
public:
	People(string name = "cjn", int age = 20, int num = 4)
		:_name(name), _age(age), _num(num)
	{
		cout << "People()" << endl;
	}
	void who()
	{
		cout << "People_who" << endl;
		cout << _name << endl << _age << endl << _num << endl;
	}
public:
	int _a = 3;

protected:
	string _name;
	int _age;
private:
	int _num;
};

class Student :public People
{
public:
	Student(int sno = 20216868)
		:People("王五",30,90),_sno(sno)
	{
		cout << "Student()" << endl;
	}
	void who()
	{
		cout << "Student_who" << endl << "_sno=" << _sno << endl;
		People::who();
	}
protected:
	int _sno;
};
int main()
{
	People p1;
	Student s1;

	p1.who();
	s1.who();
	return 0;
}

C++如何让自己变得富有?,C++,c++,开发语言,c语言

试着手动分别实现一下,采用publicprotectedprivate三种继承方式,观察它们在派生类外面的访问权限.

还是代码演示看的清楚:

#include <iostream>
using namespace std;

class People
{
public:
	People(string name = "cjn", int age = 20)
		:_name(name)
		, _age(age)
	{
		cout << "People()" << endl;
	}
public:
	int _a = 3;

protected:
	string _name;
	int _age;

private:
	int _num;
};

//class Student :public People				//公有继承
//class Student :protected People			//保护继承
class Student :private People				//私有继承
{
public:
	Student(int sno = 20216868)
		:_sno(sno)
	{
		cout << "Student()" << endl;
	}
	void test()
	{
		//在派生类中可以访问基类的public成员
		_a = 5;

		//在派生类中可以访问基类的protect成员
		_name = "王五";
		_age = 66;

		//不可在派生类中访问基类的私有成员,公有继承都不行,因为基类的私有成员,在派生类不可见
		//_num = 20;		//报错

		//访问派生类自己的成员当然是可以的.
		_sno = 20214321;
	}
protected:
	int _sno;
};

int main()
{
	People* p1 = new People;
	
	cout << endl;

	Student* s1 = new Student;
	s1->test();

	//s1->_a = 3;	//公有继承时, 派生类的指针在派生类外面也可以访问基类的public成员.
	cout << endl;

	return 0;
}

我们一般都使用公有继承,在公有继承下:
(1)如果我们想让成员在派生类中可以访问,在外面不可访问,此时就适合在基类中定义为protected成员.
(2)如果我们希望成员在派生类外面都可以被访问,则采用public成员.

四、切片

派生类是由继承基类后,加上自己的成员构成的,那我们只取派生类中基类的那部分,将其赋值给一个基类对象,这就类似于切割或者切片.

定义:
派生类对象 可以赋值给 基类的对象 / 基类的指针 / 基类的引用。这里有个形象的说法叫切片或者切割。寓意把派生类中父类那部分切来赋值过去。
C++如何让自己变得富有?,C++,c++,开发语言,c语言

#include <iostream>
#include<string>
using namespace std;
class People
{
protected:
	string _name;
	int _age;
private:
	int _num;
};

class Student :public People
{
protected:
	string _course;
	int _sno;
};
int main()
{
	People p1;				//基类对象
	Student s1;				//派生类对象
	People* pp1 = &p1;		//基类指针
	Student* ps1 = &s1;		//派生类指针

	
	//子类对象可以赋值给父类对象 / 指针 / 引用
	p1 = s1;						//基类对象可以由子类切片赋值
	pp1 = &s1;						//基类指针可以指向派生类的对象中基类的那部分(切片)
	People& rp1 = s1;				//基类的引用也可以由派生类的初始化

	//派生类对象不可由基类来赋值
	//s1 = p1;						//报错

	//派生类指针与基类指针可以强转赋值,但是注意越界.
	ps1=(Student*)pp1 ;
	pp1 = (People*)ps1;
	return 0;
}

总结:

C++中的继承有以下特点:

子类可以继承父类的公有成员(public)和保护成员(protect),但不能直接访问父类的私有成员。

子类可以增加自己的新成员和方法。

强调一波
C++中的继承有三种方式:

公有继承:以public关键字继承父类,父类的公有成员和保护成员都可以在子类中访问。

保护继承:以protected关键字继承父类,父类的公有成员和保护成员都会变成子类的保护成员。

私有继承:以private关键字继承父类,父类的公有成员和保护成员都会变成子类的私有成员。

  1. 基类private成员在派生类中无论以什么方式继承都是不可见的。不可见是指不能访问,不代表没有被继承下来.

  2. 基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。(这个上面有例子介绍)

  3. (1) 关键字class,也就是默认的继承方式是private.
    (2)struct,C++中结构体也升级为了类,但是结构体的默认的继承方式是public,不过最好显示的写出继承方式,更容易让人理解.

  4. 在实际运用中几乎都是使用public继承,很少有protetced/private继承,因为继承本身就是为了得到基类的成员,公有继承更加合适.

下一篇会介绍,派生类中的默认成员函数,多继承,菱形继承等知识,请保持关注哦!
C++如何让自己变得富有?,C++,c++,开发语言,c语言文章来源地址https://www.toymoban.com/news/detail-717459.html

到了这里,关于C++如何让自己变得富有?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [NLP]如何训练自己的大型语言模型

    大型语言模型,如OpenAI的GPT-4或Google的PaLM,已经席卷了人工智能领域。然而,大多数公司目前没有能力训练这些模型,并且完全依赖于只有少数几家大型科技公司提供技术支持。 在Replit,我们投入了大量资源来建立从头开始训练自己的大型语言模型所需的基础设施。在本文中

    2024年02月02日
    浏览(27)
  • (自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)

     写自己的开发语言时,很多人都会拿JSON当第一个练习对象 开源net json FJSON 解析工具 https://dbrwe.blog.csdn.net/article/details/107611540?spm=1001.2014.3001.5502 以上是JSON的简化产生式表示形式。其中, json 是最顶层的规则,可以是一个对象或一个数组。 object 表示一个对象,由一对大括号

    2024年02月10日
    浏览(37)
  • 低代码让开发变得不再复杂

    在数字化的时代背景下,企业都面临巨大的数字化转型的挑战。为了应对这样的挑战,企业软件开发工具和平台也在不断革新和发展。低代码开发平台随之应运而生,成为了许多企业转型的首选方案。 iVX 致力于为企业数字化转型提供最佳的软件开发解决方案。 国内现在开发

    2024年02月05日
    浏览(19)
  • 自己开发一种编程语言,可以同时开发鸿蒙,Android ios的三个平台的应用

    要开发一种可以在鸿蒙操作系统、Android操作系统和iOS操作系统上运行的编程语言,需要考虑以下几个方面: 语言设计:首先需要设计一种语言,该语言应具备跨平台的特性,能够在不同操作系统上编写应用程序。这需要考虑语法、语义、类型系统等方面的设计。 编译器或解

    2024年02月04日
    浏览(36)
  • 程序员在职场中如何让自己的技能快速提高,WEB前端开发工程师如何让自己快速成为团队的核心开发人员?

    今天聊一聊 就是我们在工作中就实际的 工资里面 写代码的过程中怎么提高自己的 一些技能 以及我们怎么样快速成为 就是一个团队的核心开发人 包括我以前 其实我也是一个小迷弟 后来就是慢慢慢慢 包括经历一些项目什么东西 其实现在已经慢慢成为核心开发人员 就是分享

    2023年04月16日
    浏览(49)
  • 如何选择适合自己的小程序开发框架

    随着微信、支付宝等开放平台的壮大,移动应用生态市场的蓬勃发展,例如小程序已经成为各个企业和开发者的重要选择。为了提高小程序的开发效率和代码重用性,许多第三方开发框架应运而生。 准备为需要的朋友整理一些常见的小程序第三方开发框架进行对比,帮助大家

    2024年02月05日
    浏览(38)
  • 如何让QLC变得更可靠?

    01.QLC是什么? 当前,市面上有4种常见的NAND类型:SLC、MLC、TLC和QLC。 SLC指一个存储单元存储1比特数据,而QLC的一个存储单元则存储4比特数据。虽然数据密度的增加会降低存储每GB数据的成本,但单个存储单元含有的比特数越多,也会衍生出NAND的数据可靠性降低、读写延迟增

    2024年02月04日
    浏览(25)
  • 在嵌入式开发中如何提高自己的代码水平

      在开始学习嵌入式系统或者单片机系统的时候,大多数人的学习方法都是自己找视频教程或书本自己学,有的人也许会掏钱报个培训班什么的跟着老师学。   当自己慢慢的可以独立写代码的时候,就会觉得已经学会了。特别是自己能独立完成一些简单的项目之后感觉自

    2024年02月09日
    浏览(24)
  • GitHub Copilot:让开发编程变得像说话一样简单

    引用: 人类天生就梦想、创造、创新。但今天,我们花太多时间被繁重的工作所消耗,花在消耗我们时间、创造力和精力的任务上。为了重新连接我们工作的灵魂,我们不仅需要一种更好的方式来做同样的事情,更需要一种全新的工作方式。 前言: 最近,随着GPT-4 植入 Of

    2024年02月15日
    浏览(27)
  • (实用)如何在vscode设置自己的代码片段,提高开发效率

     项目背景 很多时候,我们新建vue文件的时,都需要把重复的代码结构重新输入或者copy过来,对开发效率照成影响。😫 可以通过键入 vue3 快速生成代码片段 构建效果 操作步骤 在vscode左下角,点击设置按钮,选择新建 用户代码片段 : 也可以在 文件 / 首选项 / 配置用

    2024年04月09日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包