类和对象的创建和实例化

1. 类的概述

1.1 具体示例

类是描述一类事物的特征和行为的统称,抽象的不存在的,泛指的概念,例如:描述一个人,从外观上(特征)和言行举止(行为)上进行描述外观上(特征):长头发蓝牙眼睛白皮肤带了美瞳年龄多大身高体重.....言行举止(行为):走路跑步说话学习打游戏.......

1.2 对象

是指类的实例化(实实在在存在的),是特指的概念,例如:人类实例化对象张三、李四、王二等等

1.3 程序来描述

关键字:class   -------描述一个类
格式:class    类名{//外观---特征长头发蓝牙眼睛白皮肤带了美瞳年龄多大身高体重.....//言行举止----行为走路跑步说话学习打游戏.......};例如:class   People{//特征int  eyes;int age;int height;int weight;char name[20];.....//行为void walk(){}void run(){}void play(){}void study(){}..........};

特征(属性):

指的是变量,称为类的成员变量

行为(方法):

指的是函数,称为类的成员函数

类的成员:

包含了成员变量和成员函数

1.4 创建类

1.4.1 第一种方式,直接在主程序文件中创建类

main.c
#include "iostream"
using namespace std;//第一种方式,直接在主程序文件中创建类
class People1
{int age;//年龄int height;//身高char name[20];//姓名//函数的实现第一种方式:在类中实现函数void walk()//走路的行为{cout << "走路" << endl;}void play()//玩的行为{cout << "玩耍" << endl;}void study();//学习
};
//函数的实现第二种方式:在类外实现函数
/*
格式:函数返回值类型    类名  ::函数名(参数列表){//代码}
*/void People1::study()
{cout << "学习" << endl;
}int main()
{return 0;
}

1.4.2 分模块创建

People2.h
#pragma once
#include "iostream"
using namespace std;class People2
{int age;int height;char name[20];void walk(){cout << "走路" << endl;}void study(){cout << "学习" << endl;}//这个函数的实现我们换一种方式实现,我们放在people2.cpp中实现void play_game();};
People2.cpp
#include "People2.h"
/*
格式:函数返回值类型    类名  ::函数名(参数列表){//代码}
*/
void  People2::play_game()
{cout << "玩游戏" << endl;
}

2. 实例化的两种方式

是指类的实例化(实实在在存在的),是特指的概念,例如:人类实例化对象张三、李四、王二等等

实例化的两种方式:

2.1 在栈区进行实例化

格式:

类名对象名; //类名和对象名就是标识符, 满足语法规范

例如:

People zhangsan ; //实例化zhangsan对象

People lisi;          

2.1.1 通过类的对象去进行访问

(1)对象是在栈区实例化

符号:“.”

格式:

对象名  .    成员 ;  //访问类的成员

例如:

zhangsan.height=180;

zhangsan.walk();

main.cpp
#include "iostream"
using namespace std;//类和对象实例化//第一种方式,直接在主程序文件中创建类
class People1
{
public:int age;//年龄int height;//身高char name[20];//姓名//函数的实现第一种方式:在类中实现函数void walk()//走路的行为{cout << "走路" << endl;}void play()//玩的行为{cout << "玩耍" << endl;}void study();//学习
};
//函数的实现第二种方式:在类外实现函数
/*
格式:函数返回值类型    类名  ::函数名(参数列表){//代码}
*/void People1::study()
{cout << "学习" << endl;
}int main()
{//第一种 实例化一个People1People1 people1;people1.walk();people1.play();people1.study();cout << endl;//第二种 实例化一个People1People1* people2 = new People1;people2->walk();people2->play();people2->study();return 0;
}

2.2 在堆区进行实例化

格式: .

类名  对象名   new  类名; //在堆区开辟类大小的空间,并用对象指向该空间

People* zhangsan = new People    //注意释放空间:delete zhangsan

2.2.1 如何访问类的成员

(2)对象是在堆区实例化

符号:“->”

格式:

对象名 ->  成员 ;//访问类的成员

例如:

zhangsan->height=180;

zhangsan->walk();

main.cpp
//第二种 实例化一个People1People1* people2 = new People1;people2->walk();people2->play();people2->study();

#include <iostream>
using namespace std;class MyClass {
public:MyClass() {// 无参构造函数的实现}void setValue(int value) {data = value;}void display() {cout << "Value: " << data << endl;}int data;
};int main() {// 在堆上创建对象MyClass* ptr = new MyClass();// 为成员变量赋值ptr->setValue(42);ptr->display();ptr->data = 50;ptr->display();// 释放对象所占用的内存delete ptr;return 0;
}

2.3 面试题:结构体和类的区别是什么?

仅供参考

1. 默认访问权限:

在结构体中,默认的成员访问权限是公共的(public)。

在类中,默认的成员访问权限是私有的(private)。

2成员函数:

在结构体中,你可以包含成员函数,但这些函数默认是公共的。

在类中,你可以有公共、私有和受保护的成员函数,具体取决于你在类定义中的声明。

3继承:

在结构体中,可以进行继承,但默认继承权限是公共的。

在类中,可以进行公共、私有和受保护的继承,具体取决于你在类定义中的声明。

4默认构造函数:

在结构体中,如果没有提供构造函数,会有一个默认的构造函数。

在类中,如果没有提供构造函数,也会有一个默认的构造函数,但是如果你提供了自定义构造函数,那么默认构造函数就不再提供。

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

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

相关文章

c 语言学习:输出阶乘的算式

c 语言学习&#xff1a;输出阶乘的算式 代码 #include "stdio.h"int fact(int num){if (num < 1){printf("1 ");return 1;} else {printf("%d x ",num);return num * fact(num-1);} }int main(){int num 10; // printf("plz inpu…

【华为OD题库-107】编码能力提升计划-java

题目 为了提升软件编码能力&#xff0c;小王制定了刷题计划&#xff0c;他选了题库中的n道题&#xff0c;编号从0到n-1&#xff0c;并计划在m天内按照题目编号顺序刷完所有的题目(注意&#xff0c;小王不能用多天完成同一题) 在小王刷题计划中&#xff0c;小王需要用time[i]的时…

老鹰目标检测数据集VOC格式60张

老鹰是天空中的王者&#xff0c;它们拥有极佳的飞行能力。它们能以惊人的速度在天空中翱翔&#xff0c;尤其擅长高空俯冲捕食。老鹰的视力非常敏锐&#xff0c;能够准确地发现地面上的猎物&#xff0c;并迅速下落抓取。它们的爪子强而有力&#xff0c;足以击倒比自己体型庞大的…

云计算与大数据之间的羁绊(期末不挂科版):云计算 | 大数据 | Hadoop | HDFS | MapReduce | Hive | Spark

文章目录 前言&#xff1a;一、云计算1.1 云计算的基本思想1.2 云计算概述——什么是云计算&#xff1f;1.3 云计算的基本特征1.4 云计算的部署模式1.5 云服务1.6 云计算的关键技术——虚拟化技术1.6.1 虚拟化的好处1.6.2 虚拟化技术的应用——12306使用阿里云避免了高峰期的崩…

NAT路由器,将内网ip转换为外网ip

Network Address Translation&#xff0c;网络地址翻译。 概念 NAT就是在局域网内部使用内部地址&#xff0c;而当内部节点要与外部网络通信时&#xff0c;在网关将内部地址替换为公用地址&#xff0c;从而在外部网关正常使用。 NAT表是转换的核心 NAT路由器有NAT表&#xf…

0基础学习VR全景平台篇第131篇:曝光三要素—光圈

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 我们经常从电视或书刊上看到这样的照片&#xff0c;照片的主体清晰&#xff0c;前后镜朦胧虚化&#xff0c;整体看起来非常的漂亮。那这样的照片是如何拍出来的呢&#xff1f;他和…

为什么要出现并发?并发的三要素

大家好&#xff0c;我是"java继父"伯约&#xff0c;假如这篇对大家有帮助的话求一个赞&#xff0c;另外文章末尾放了我从小白到架构师多年的学习资料。 1.为什么需要多线程 众所周知&#xff0c;CPU、内存、I/O 设备的速度是有极大差异的&#xff0c;为了合理利用 C…

Vue编写登录注册页面前端校验

登录注册校验 template页面 <div class"app-login"><!--登录 --><div class"form"><el-form ref"form" size"large" autocomplete"off" v-if"isLogin" :model"registerData" :r…

FXCM福汇官网:深入解析BOLL指标的喇叭口形态及含义

BOLL指标是一种通过布林线&#xff08;Bollinger Bands&#xff09;的上轨线、中轨线和下轨线的相互关系来判断市场趋势和波动性的技术分析工具。BOLL指标的喇叭口形态包括开口型、收口型和紧口型&#xff0c;它们各自具有独特的含义。 《FXCM福汇官网开户》 1. 开口型喇叭口…

cesium实现二三维联动

记录项目中实现二三维地图联动 效果如下&#xff1a; 第一步&#xff1a;现在页面中加载二三维地图&#xff08;地图的初始化已省略&#xff09; <template><div><div><button click"show">二三维联动</button></div><div&…

Go Web 编程

Go Web 编程 更新于 1年前 一步步带你进入 Go Web 编程的世界,让我们开始探索吧! 文档类型:系统文档 文章统计:96 篇,字数 12.52 万,点赞 508 文章列表所有讨论 基本信息 关于本书 第一章. Go 环境配置 01.0. Go 环境配置 01.1. 安装 Go 01.2. GOPATH 与工作空间 …

经典文献阅读之--RenderOcc(使用2D标签训练多视图3D Occupancy模型)

0. 简介 3D占据预测在机器人感知和自动驾驶领域具有重要的潜力&#xff0c;它将3D场景量化为带有语义标签的网格单元。最近的研究主要利用3D体素空间中的完整占据标签进行监督。然而&#xff0c;昂贵的注释过程和有时模糊的标签严重限制了3D占据模型的可用性和可扩展性。为了解…

[HADOOP]数据倾斜的避免和处理

避免数据倾斜 初始设计方面&#xff1a; 设计阶段考虑数据分布&#xff0c;并尽可能确保数据均匀分布。 预处理数据&#xff1a; 在数据加载到 Hadoop 之前进行预处理&#xff0c;以减少倾斜。使用抽样或统计方法来了解数据分布特征&#xff0c;并据此调整。 使用合适的Partiti…

EtherCAT主站SOEM -- 11 -- EtherCAT从站 XML 文件解析

EtherCAT主站SOEM -- 11 -- EtherCAT从站 XML 文件解析 1 EtherCAT 从站信息规范1.1 XML 文件说明1.1.1 XML 数据类型1.1.2 EtherCATInfo1.1.3 Groups1.1.4 Devices1.1.5 Modules1.1.6 Types1.1.6.1 AccessType 的组成1.1.6.2 ArraylnfoType 的组成1.1.6.3 DeviceType 的组成1.…

Mendelson AS2 介绍下载和配置

最近与一家国外公司做EDI对接&#xff0c;并且EDI通讯工具是基于AS2协议的。目前开源的as2的开源项目有openas2,Mendelson AS2&#xff0c;和国人写的freeas2但是&#xff0c;现在freeas2已经被从开源中国不能下载了&#xff0c;变为收费的版本了。 如果你需要使用基于AS2协议…

动态规划、DFS 和回溯算法:二叉树问题的三种视角

动态规划、DFS 和回溯算法&#xff1a;二叉树问题的三种视角 在计算机科学中&#xff0c;算法是解决问题的核心。特别是对于复杂的问题&#xff0c;不同的算法可以提供不同的解决方案。在本篇博客中&#xff0c;我们将探讨三种算法&#xff1a;动态规划、深度优先搜索&#xf…

掌握常用Docker命令,轻松管理容器化应用

Docker是一个开源的应用容器引擎&#xff0c;它可以让开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux机器或Windows机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。下面介…

Python基础(九、重要的全局变量)

文章目录 全局变量是什么&#xff1f;引用全局变量修改全局变量注意事项结语 全局变量是什么&#xff1f; 首先&#xff0c;全局变量是在函数外部定义的变量&#xff0c;它可以在程序的任何地方被访问。就好像一家人共用的盘子&#xff0c;随手可以拿来用&#xff0c;但也可能…

智能仓储管理系统设计与实现

智能仓储管理系统设计与实现 第一章 绪论 1.1 设计背景 物联网&#xff08;英文&#xff1a;Internet of Things&#xff0c;缩写&#xff1a;IoT&#xff09;是万物相连的互联网&#xff0c;即把所有物品通过信息传感设备与互联网连接起来&#xff0c;以实现智能化识别、定位、…

【Unity入门】NGUI和UGUI比较

目录 NGUI组件比较多&#xff0c;比较常用的有UGUI组件比较少&#xff0c;比较常用的有NGUI和UGUI比较 现在主流项目中基本上都是NGUI和UGUI&#xff0c;那么到底选哪个&#xff0c;我们先来做个比较 图集处理功能比较 NGUI需要使用工具手动拼接图片成图集。 UGUI开发期间可以直…