c++之面向对象程序设计

【NOI级-C++程序设计:1、面向对象的程序设计思想 (OOP)】 1、定义:面向对象的程序设计(Object-Oriented Programming, OOP)是一种通过 “对象” 来组织程序的编程方式,它将数据(属性)和操作数据的函数(方法)捆绑在一起,形成一个独立的单元。因此,对象的抽象是类,类的具体化就是对象,是用户自定义的数据类型,定义了对象的属性和行为(即方法),也可以说类的实例是对象。目的:将数据(属性)和操作数据的函数(方法)捆绑在一起(即对象),并通过访问控制(private、protected、public)隐藏内部实现细节。 阅读详情

一、概括

在基于对象的程序设计中,我们基于内置数据类型构造我们自己的类类型,而面向对象的编程方式中,我们利用类对象来构建新的类对象,效率将大幅提高。

二、组合方式

最简单的利用方式和基于对象的程序设计一样,采用简单的包含类对象的方式。

#include <stdio.h>
#include <stdlib.h>

#define DOOR_CLOSE 0
#define DOOR_OPEN  1

class door
{
public:
	door(int state=DOOR_CLOSE){_state=state;}

	void open();
	void close();

private:
	int _state;
};

void door::open(void)
{
	
	if(_state==DOOR_CLOSE){
		_state=DOOR_OPEN;
		printf("door is opened\n");
	}else{
		printf("door is already open!\n");
	}
}


void door::close(void)
{
	if(_state==DOOR_OPEN){
		_state=DOOR_CLOSE;
		printf("door is closed\n");
	}else{
		printf("door is already closed!\n");
	}
}

class house
{
public:
	house(){front_door=door(DOOR_OPEN);}
	door front_door;
};

int main(void)
{
	house myhouse;
	myhouse.front_door.close();
	myhouse.front_door.open();
	myhouse.front_door.open();	
	system("pause");
	return 0;
}
//内部类对象的初始化将调用内部对象的构造函数。

三、继承方式

继承方式提供了更大的灵活性,可以对父对象进行细微的修改。

#include <stdio.h>
#include <stdlib.h>

class person
{
public:
	person(const char *name,const char *sex,int age=28,int height=173,int weight=77):_name(name),_sex(sex)
	{
		_age=age;
		_height=height;
		_weight=weight;
	}
	person():_name("justsong"),_sex("male")//c++悲剧的不能调用另一构造函数
	{
		_age=28;
		_height=173;
		_weight=77;		
	}
	void info(void)
	{
		printf("%s :%d,%s,%d,%d\n",_name,_age,_sex,_height,_weight);
	}
protected:
	const char *_name;
	const char *_sex;
	int _age;
	int _height;
	int _weight;
};

class student:public person
{
public:
	student():person("cy","female",30,157,65)
	{
		_grade=6;
	}
	
	void info(void)
	{		
		printf("%s :%d,%s,%d,%d,and my grade is %d\n",_name,_age,_sex,_height,_weight,_grade);
	}
private:
	int _grade;
};

int main(void)
{
	person *me=new person();
	me->info();
	student cy;
	cy.info();
	system("pause");
	return 0;
}


四、在继承基础上实现多态

#include <stdio.h>
#include <stdlib.h>

class person
{
public:	
	virtual void tell(void)
	{
		printf("I am a person!\n");
	}
	virtual void eat(void)
	{
		printf("I eat mantou!");
	}
};

class worker:public person
{
public:
	void tell(void)
	{
		printf("I am a worker!\n");
	}

	void eat(void)
	{
		printf("I eat mifan");
	}
};

class student:public person
{
public:
	void tell(void)
	{
		printf("I am a student!\n");
	}

	void eat(void)
	{
		printf("I eat jiaozi!");
	}
};

void tell_you(class person* p)
{
	p->tell();
}

int main(void)
{
	person *me=new person();
	tell_you(me);

	worker *you=new worker();
	tell_you(you);

	student *him=new student();
	tell_you(him);

	printf("%d,%d,%d\n",sizeof(person),sizeof(worker),sizeof(student));
	system("pause");
	return 0;
}

//对象的最开始处存储V-TABLE的指针,父类的虚函数在子类的前面,如果有覆盖则用子类的虚函数替代父类的虚函数。
//虚函数的作用是用一个统一的接口去访问继承树中的子类,以不变应万变。



C++复习题(面向对象程序设计) ##C++复习题(面向对象程序设计) 一、选择题 C++语言属于( C )。 A) 自然语言 B) 机器语言 C)面向对象语言 D) 汇编语言 下面选项中不属于面向对象程序设计特征的是( C ) 。 A)继承性 B)多态性 C)相似性 D)封装性 可用作C++语言用户标识符的一组标识符是( B )。 A) void define +WORD B) a3_b3 _123 YN C) for -abc Cas 阅读详情

相关推荐

C++ 面向对象程序设计

C++完全支持面向对象的程序设计,包括面向对象开发的四大特性。

小天狼星_布莱克 的博客 413

面向对象程序设计

面向对象程序设计是一种编程范式,它将数据(属性)和对数据的操作(方法)封装在一起,形成对象。通过对象之间的交互来构建程序,与面向过程编程不同,面向过程侧重于函数和过程的调用,而面向对象更注重对象的创建和它们之间的关系。下面介绍面向对象程序设计的有关概念:1.类:类是 C++ 中面向对象编程的核心概念,它是一种用户自定义的数据类型,用于描述对象的属性和行为。

2301_81887003的博客 1789

《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)

《C++面向对象程序设计》✍千处细节、万字总结 文章目录《C++面向对象程序设计》✍千处细节、万字总结一、面向对象程序设计二、C++基础2.1 C++的产生和特点2.2 一个简单的C++示例程序2.3 C++在非面向对象方面对C语言的扩充输入和输出cinconst修饰符void型指针内联函数带有默认参数值的函数函数重载作用域标识符"::"强制类型转换new和delete运算符引用三、类和对象(一)3.1 类的构成3.2 成员函数的定义3.3 对象的定义和使用3.4 构造函数与析构函数构造函数成员初始化列表

像写诗一样优雅地写代码~ 78万+

面向对象程序设计C++

类似C语言中先把函数定义在前面,再在后面写具体的函数(4)类成员的可访问范围1.“隐藏”的作用2)

qq_74170479的博客 1182

C++面向对象程序设计习题详解

本文还有配套的精品资源,点击获取 简介:《C++面向对象程序设计-习题答案》是马石安教授编写的教材,专注于C++的面向对象技术。该资料详细解答了大量习题,旨在帮助学习者深入理解和掌握面向对象编程的核心概念。本习题集包括类的定义、封装、继承、多态等关键知识点的练习,以及构造函数、析构函数、运算符重载、模板、异常处理和STL等高级主题。解答部分不仅提供了详细步骤,还帮助读者通过...

weixin_32687875的博客 1555

博途 V16(TIA portal V16)安装教程

本文提供了西门子TIA Portal V16软件的完整安装指南。内容包括百度网盘下载链接(提取码kv69)、详细安装步骤(关闭安全保护、典型安装设置)、授权破解方法,以及PLCSIM仿真功能的使用说明。重点演示了S7-1200 PLC程序的仿真过程,解析了仿真界面各元素功能,包括状态指示灯(RUN/STOP/ERROR)、操作按钮(RUN/STOP/MRES)和网络接口状态等。通过图文并茂的方式,完整呈现了从软件安装到PLC程序仿真的全流程操作。

lingchen1906的博客 6669

C++面向对象程序设计

C++面向对象程序设计 在C++语言中,当我们使用基类的引用或指针调用一个虚函数时将发生动态绑定,即JAVA中的多态 基类通常要定义一个虚析构函数,即使该函数不执行任何实际操作,也是如此。 在C++中基类的成员函数有两种:1、基类希望派生类进行重写的函数;2、基类希望派生类直接继承而不用改变的函数。对于前者,基类将其定义为虚函数。当指针或引用调用虚函数时,该调用将被动态绑定(即多态)。 任何构...

jiejingguo的博客 1269

宇树机器人G1二次开发:语音对话、打断与激活功能实现指南

宇树机器人G1是一款功能强大的四足机器人,其开放的SDK和API为开发者提供了广阔的二次开发空间。其中,语音交互是提升机器人智能化水平和用户体验的关键功能。本文将详细介绍如何在宇树机器人G1上进行二次开发,实现。语音打断允许用户在机器人说话时随时中断并输入新指令,这是提升交互自然度的关键功能。三大核心功能,帮助你构建更自然、更智能的人机交互系统。语音识别是将用户的语音输入转换为文本的过程。识别文本后,需要理解用户意图并生成回复。将文本回复转换为语音输出。

m0_52645558的博客 660

C++面向对象程序设计(第二版)

C++面向对象程序设计(第二版) (1)第一章&第二章 (1)什么是面向对象程序设计? (2)在面向对象程序设计中,什么是对象?什么是类?对象与类的关系是什么? (3)现实世界中的对象有哪些特征? (4)什么是消息,消息具有什么性质? (5)什么是方法?在C++中它是通过什么来实现的? (6)什么是抽象和封装? (7)什么是继承?请举例说明。 (8)若类之间具有继承关系,那它们之间具有什么特征? (9)什么是单继承?多继承?请举例说明? (10)什么是多态性?请举例说明。 (11)传统程序设计方法的

kittimzhe的博客 2585

大模型推理中Prefill与Decode、KV Cache三者说明

Prefill 阶段对输入 Prompt 并行编码,一次性构建KV Cache,属于计算密集型任务。Decode 阶段逐 token 迭代生成,复用KV Cache避免重复计算,属于显存带宽密集型任务。KV Cache是自回归推理的核心基石,用显存换时间,实现两阶段衔接与高效生成。PD 分离通过任务解耦、异构硬件、异步调度、独立批处理,解决传统一体化推理的资源冲突与利用率低下问题,是当前云端大模型推理服务的主流工程优化方向。

a486259的博客 1480

大模型蒸馏实战:让小模型获得大模型的知识

本文为初学者提供了一份大模型蒸馏实战指南,通过情感分析任务演示如何将 BERT 的知识迁移到轻量级 TextCNN。文章结合原理图解与 PyTorch 代码,详解软标签生成、温度调节和双损失设计等核心概念,并对比蒸馏前后的性能差异(准确率提升 4.6%,推理速度达 1200 句 / 秒)。内含可直接运行的代码片段、训练技巧及常见问题解答,助力开发者快速掌握模型压缩核心技术,实现工业级部署效率。适合 NLP 入门者学习实践。

1368

C++程序设计【二】之面向对象的基本概念

感谢内容提供者:金牛区吴迪软件开发工作室 文章目录第二章:面向对象的基本概念一、结构化程序设计二、面向对象程序设计的概念和特点1.面向对象思想的提出2.面向对象程序设计的特点三、类的初步知识1.类的定义2.类的定义示例四、类的示例程序剖析1.程序结构2.成员变量与成员函数的定义3.创建类对象的基本形式五、访问对象的成员1.使用对象访问成员变量与调用成员函数2.使用指针访问对象的成员3.使用引用访问对象的成员六、类成员的可访问范围1.访问范围说明符的含义2.成员的访问3.隐藏的作用七、标识符的作用域与可见.

吴小迪的博客 3564

第二章 零差云控关节模组内部构造

对零差云控的eRob70I进行了拆解

SFY__优快云的博客 5955

[Cpp] 面向对象程序设计 C++

初始化列表(包括成员对象初始化) 初始化列表 ( 推荐 ) : 可以初始化任何类型的数据, 不管是不是普通类型还是对象,都建议用. 不再需要在构造器中赋值了, 而且初始化列表比构造函数要早执行. 成员初始化次序取决于成员在类中的声明次序. 当类成员有其它对象时,构造器内给对象赋值会触发成员对象的默认构造函数(无参数的),如果成员对象没有默认构造函数编译报错. 所以有...

dilunzhuang0924的博客 524

Ubuntu 22.04 局域网安装GitLab

下面直接给你一份。

u013250861的博客 666

第076篇:大涡模拟进阶

大涡模拟(Large Eddy Simulation, LES)是介于直接数值模拟(DNS)和雷诺平均方法(RANS)之间的重要湍流模拟方法。本文深入介绍动态Smagorinsky模型、尺度相似模型、WALE模型和隐式LES等高级亚格子模型。通过Python实现槽道湍流和圆柱绕流的LES求解器,详细展示近壁面处理、动态系数计算和亚格子应力建模技术。大涡模拟,亚格子模型,动态模型,Smagorinsky,WALE模型,尺度相似模型,近壁面处理,槽道湍流LES的核心思想是对Navier-Stokes方程进行空间

2401_87715305的博客 736

C++面向对象程序设计(Visual C++2010版)课本例题源程序(上)

目录 6第1章 绪论 11第2章 C++语言对C语言的扩充 26第3章 类和对象 53第4章 友元 112习题 128第5章 继承与派生 129第6章 多态性和虚函数 170第7章 C++语言的输入输出流库 215第8章 异常处理 243第9章 Windows编程基础和MFC编程基础 254第10章 对话框和控件 297第11章 菜单和文档/视图结构 347第12章 图形设备接口 361正文结束 373附录A 程序的调试与运行 374。

muse3159546973的博客 2815

[QMT量化交易小白入门]-五十、十年基本保证每年盈利,全天ETF候稳稳的幸福

全局参数raise_rate = -1 # 触发rebalance的上涨比例period: 设定为22,表示每22个交易日执行一次调仓(即大约每月一次)。这是策略的时间框架基础。raise_rate: 初始值设为-1,意味着默认情况下不会因为资产的涨幅而触发调仓。这一参数用于控制是否基于资产表现动态调整仓位。run_count: 用于记录策略运行的次数,帮助判断何时执行定期调仓。1、为了简便计算,回撤时将调仓再平衡是先卖出再买入,没有比较持仓,实盘时是需要计算的,减少交易费用。

木头大左的博客 806

c++面向对象程序设计 谭浩强 第二章答案

类体内定义成员函数 #include <iostream> using namespace std; class Time { public: void set_time(); void show_time(); private: //成员改为公用的 int hour; i...

weixin_30326745的博客 6057

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++面向对象程序设计(基础版上)

基于侯捷老师的课程2015年版C++面向对象程序设计基础

qq_53279990的博客 1052

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

面向对象程序设计C++版

主要用来记录面向对象程序设计C++版的基础

2401_86393872的博客 806

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【面向对象程序设计与C++】学习笔记

面向对象(Object Oriented)是一种软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计与软件开发,扩展到如应用结构、应用平台等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。简而言之,面向过程就是根据业务从上到下写代码,而面向对象就是将数据和函数绑定到一起,加速开发程序,减少重复的代码的重写过程。对象可以是人们要研究的任何事物,包括具体的(如程序、计算机)和抽象的(如思想、规则、计划等)每一类对象都有属性(如大小、形状、重量等)和行为。

DawnAurora_的博客 1090
上一篇: c++之面向过程程序设计
下一篇: c++之string类
codesnail
博客等级 码龄18年 113粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值