C++程序设计—类与对象

news2024/9/21 5:29:24

目录

1、类和对象的概念

2、面向对象程序设计的特点

3、类和对象的区别

4、成员运行算符

(1)(.)点运算符

(2)(->)箭头运算符

5、类的声明形式

(1)public

(2) private

(3) protected

 6、成员函数调用中的目的对象


可以说这里才是C++的真正开始!

1、类和对象的概念

类是一种自定义数据类型,是对一类事物共同属性和行为的抽象。

对象是该类的某一特定实例,是具体的,占内存空间的。

可以把类当成是一种自定义数据类型,对象则是该数据类型定义的一个变量。

2、面向对象程序设计的特点

抽象;封装;继承;多态

3、类和对象的区别

类是对象的抽象, 不占用内存;而对象是类的具体实例, 占用存储空间。

4、成员运行算符

.(点)和 ->(箭头) 用于引用类、结构和共用体的成员

点运算符应用于实际的对象;箭头运算符与一个指向对象的指针一起使用。

假设有下面的结构:

struct Employee {
  char first_name[16];
  int  age;
} emp;

(1)(.)点运算符

strcpy(emp.first_name, "zara");

表示把值 "zara" 赋给对象 emp 的 first_name 成员:


(2)(->)箭头运算符

如果 p_emp 是一个指针,指向类型为 Employee 的对象,要把值 "zara" 赋给对象 emp 的 first_name 成员,则需要

strcpy(p_emp->first_name, "zara");

-> 称为箭头运算符,它是由一个减号加上一个大于号组成。

简而言之:访问结构的成员时使用点运算符,而通过指针访问结构的成员时,则使用箭头运算符。

5、类的声明形式

class 类名称
{
public :
    共有成员           //可以是数据成员,也可以是成员函数
private:
    私有成员          //可以是数据成员,也可以是成员函数
protected:
    保护性成员        //可以是数据成员,也可以是成员函数

};                   //分号不能省略

(1)public

公有类型成员,是类与外部的接口,任何类外定义的对象或函数都可以访问公有类型数据和函数。

#include "iostream"
using namespace std;
class complex {
public:
	float a, b;
	void add(complex x)
	{
		a+=x.a; b+=x.b;
		cout << a << "+" << b << "i\n";
	}
	void input(float x, float y)
	{
		a = x; b = y;
		cout << a << "+" << b << "i\n";
	}
};
int main() {
	complex first, second;
	cout << "input two complex:\n";
	first.input(1, 2);
	second.input(3, 4);
	first.add(second);
	cout << first.a << "," << first.b << "\n";
	return 0;
}

(2) private

 私有类型成员,只允许本类中的函数访问,来自类外部的任何访问都是非法的。

如下图,我们将成员类型换成private,就不能在外部进行访问了

#include "iostream"
using namespace std;
class complex {
private:
	float a, b;
	void add(complex x)
	{
		a+=x.a; b+=x.b;
		cout << a << "+" << b << "i\n";
	}
	void input(float x, float y)
	{
		a = x; b = y;
		cout << a << "+" << b << "i\n";
	}
};
int main() {
	complex first, second;
	cout << "input two complex:\n";
	first.input(1, 2);
	second.input(3, 4);
	first.add(second);
	cout << first.a << "," << first.b << "\n";
	return 0;
}

(3) protected

受保护类型成员,可以被派生类对象访问,不能被用户代码(类外)访问。

#include "iostream"
using namespace std;
class complex {
protected:
	float a, b;
public:
	void add(complex x)
	{
		a+=x.a; b+=x.b;
		cout << a << "+" << b << "i\n";
	}
	void input(float x, float y)
	{
		a = x; b = y;
		cout << a << "+" << b << "i\n";
	}
};
int main() {
	complex first, second;
	cout << "input two complex:\n";
	first.input(1, 2);
	second.input(3, 4);
	first.add(second);
	cout << first.a << "," << first.b << "\n";
	return 0;
}

 6、成员函数调用中的目的对象

调用一个成员函数与调用普通函数的差异在于需要使用“.”或者“->”操作符指出调用所针对的对象。

eg:

Time EndTime; 
EndTime.showTime(); 

Time *pt1=&EndTime;
pt1->setTime(12,23,26);
void main(
{
Time EndTime; //定义对象
Time *pt1=&EndTime; //声明指向该对象的指针
pt1->setTime(12,23,26); //通过指针设置成员函数
cout<< " the time is:\n";
pt1->showTime(); //通过指针调用成员函数
EndTime.showTime(); //通过对象调用成员函数
} 

后面会继续更新,必过!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DataBinding 大坑总结(网上我暂时搜不到解决方法)

在使用多Module中使用DataBinding会引发一些奇怪的问题&#xff0c;最近好好的腾出时间来折腾这些奇怪的问题&#xff1a; 1&#xff1a;如果当Module启动DataBinding重启AS启动报错的话&#xff0c;就启用允许多行代码 android { defaultConfig {multiDexEnabled true} } de…

设计模式:UML中的类图(6种关系)

一.UML图介绍 统一建模语言是用来设计软件的可视化建模语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。 UML 从目标系统的不同角度出发&#xff0c;定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图等 9 种图。 二.类图…

apkanalyzer-classpath.jar 中没有.class 文件

apkanalyzer-classpath.jar 中没有.class 文件&#xff0c;apkanalyzer-classpath.jar 包目录下&#xff0c;只有 MANIFEST.MF 文件&#xff0c;如下截图&#xff1a; 而 apkanalyzer.jar 下&#xff0c;有很多 class 文件&#xff0c;其中&#xff0c;BinaryXmlParser.class 就…

P80-MySQL

//启动mysql&#xff0c;我的名字是mysql80 net start mysql80//我的端口号为3307 mysql -hlocalhost -P3307 -uroot -p一、课程介绍 什么是数据库? 数据库&#xff1a;DataBase&#xff08;DB&#xff09;&#xff0c;是存储和管理数据的仓库。

ChatGPT账号被封怎么办?进来看看解决办法

部分内容整理自网络&#xff0c;侵删 最近有很多同学说自己的chatgpt账号被封了。仔细研究了一下大部分被封账号&#xff0c;发现主要有这些个原因&#xff1a; 1&#xff0c;被封的账号可能是用程序批量注册的&#xff0c;也就是一台机器用一个IP在短时间内注册了大量的账号 …

JSON Web Tokens (JWT) — the only explanation you will ever need

本文摘抄自 Ariel Weinberger 博客 JSON Web Tokens (JWT) — the only explanation you will ever need | by Ariel Weinberger | Medium JSON Web Tokens (JWT) — the only explanation you will ever need JSON Web Tokens are changing the world for the better. Acting …

java程序员学前端-Vue2篇

Vue 2 1. Vue 基础 1) 环境准备 安装脚手架 npm install -g vue/cli-g 参数表示全局安装&#xff0c;这样在任意目录都可以使用 vue 脚本创建项目 创建项目 vue ui使用图形向导来创建 vue 项目&#xff0c;如下图&#xff0c;输入项目名 选择手动配置项目 添加 vue rou…

【Vue基础】element快速入门

一、知识点整理 1、安装Element UI组件库&#xff0c;在当前目录下&#xff0c;在命令行执行指令&#xff1a; npm install element -ui2.15.3 如果无法安装&#xff0c;执行以下指令&#xff1a; npm install --legacy-peer-deps element-ui --save 2、引入Element组件库 …

IT项目管理画图题【太原理工大学】

期末复习汇总&#xff0c;点这里&#xff01;https://blog.csdn.net/m0_52861684/category_12095266.html?spm1001.2014.3001.5482 也不知道让画啥&#xff0c;随便猜一下吧。我觉得大概率是让画双代号网络图了&#xff0c;不是网络图我倒立&#xff0c;呃...还是算了吧&#…

氢原子光谱、类氢原子光谱和类氢离子光谱

一、氢原子光谱 &#xff08;1&#xff09;万分之五的差值 在文章“原子的波尔模型、能量量子化、光电效应、光谱实验、量子态、角动量”的第3.3节角动量量子化中&#xff0c;通过公式联立获得得里德伯常数要比经验获得的相差万分之五。 当然这时候有人会想是不是实验测得不准…

设计模式:创建者模式 - 适配器模式

文章目录 1.概述2.结构3.类适配器模式4.对象适配器模式5.应用场景6.JDK源码解析 - Reader 与 InputStream 1.概述 如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑&#xff0c;手机…

中国人民大学与加拿大女王大学金融硕士——每一份投入和努力其实都有回声

有付出&#xff0c;就会有收获&#xff1b;有努力&#xff0c;就会有回报。当你愿意走出舒适区投入到再学习上&#xff0c;当你为了提升自身而努力后&#xff0c;你终将收获属于你的美好。在金融领域在职读研的我们&#xff0c;待拿到中国人民大学与加拿大女王大学金融硕士毕业…

zabbix配置钉钉机器人告警

1.在钉钉上创建一个钉钉群组 2.在群组中添加一个机器人 3.配置zabbix server调用钉钉接口的代码(使用python) 查看是否有python环境 python --version 找到zabbix 的AlertScriptsPath目录路径 cat /etc/zabbix/zabbix_server.conf|grep AlertScriptsPath 将调用钉钉接口的py…

51单片机(80951系列)引脚功能说明

一 AT89C51引脚图 1.0 中断 1.0.1 中断源 AT89C51一共有5个中断源 &#xff08;1&#xff09;&#xff1a;外部中断0&#xff0c;外部中断请求信号由引脚输入&#xff0c;低电平或下降沿有效&#xff0c;中断请求标志位IE0。 &#xff08;2&#xff09;&#xff1a;外部中断1…

Hive-hive核心面试范围题目整理(数据倾斜、外部表内部表、分区分桶、行转列等)

1 hive的优缺点 优点 SQL减少MR的开发难度使用于实时性不高的数据分析场合优势处理大数据自定义函数 缺点 Hql表达能力优先&#xff1a;迭代式算法&#xff1f; 处理延迟效率较低&#xff0c;小数据的时候&#xff0c;不如传统数据库 2 对hive的了解 优点本质&#xff1…

pymysql详解——通过Python连接Mysql数据库

pymysql详解——通过Python连接Mysql数据库 pymysql是可用于连接mysql数据库&#xff0c;且能够提供mysql与python窗口交互创立通道的工具库。可以通过创建引擎&#xff0c;建立游标直接通过python编程实现mysql数据库操作。在开发和分析可形成线性脚本。是广泛使用的库。 连…

计算机组成原理——第七章输入输出系统(上)

如若来世再相见&#xff0c;半点朱唇尽我尝 文章目录 7.1.1 输入输出系统和IO控制方式7.1.2 外部设备7.2 IO接口7.3.1 程序查询方式流程图 7.1.1 输入输出系统和IO控制方式 i/O接口是一个电子部件&#xff0c;会被集成与主板中&#xff0c;而I/O设备则是你看得见摸得着的那些设…

O(1) 时间复杂度的抽奖算法 - The Alias Method

0 背景 在营销等场景下&#xff0c;有种常见的玩法&#xff0c;即抽奖&#xff0c;不论前端抽奖界面如何炫酷&#xff0c;底层抽奖组件具有一致性。本文不讨论奖池的抽取规则、奖池奖品配置、奖池切换、抽奖机会、奖品扣减和发放、告警和降级等&#xff0c;主要聚焦于抽奖算法…

Nginx之TCP/UDP反向代理

Nginx从1.9.13起开始发布ngx_stream_core_module模块不仅能支持TCP代理及负载均衡,其实也是支持UDP协议的。 1.Nginx下载 wget http://nginx.org/download/nginx-1.24.0.tar.gz 2.Nginx安装 #yum -y install proc* openssl* pcre* # tar -zxvf nginx-1.24.0.tar.gz #cd n…

【Docker学习三部曲】—— 核心篇

容器数据卷 基本概念 容器数据卷是 Docker 中用于持久化存储容器数据的一种解决方案它允许容器中的数据在容器重新创建或迁移时得以保留&#xff0c;而不会丢失数据卷可以看作是 Docker 主机和容器之间的一个共享目录容器可以将数据写入数据卷&#xff0c;而这些数据将储存在…