类。。。。。。

类的访问权限

类的成员有三种访问权限:public、private 和 protected,分别表示公有的、私有的和受保护的。

在类的内部(类的成员函数中),无论成员被声明为 public 还是 private,都是可以访问。

在类的外部(定义类的代码之外),只能访问 public 成员,不能访问 private、protected 成员。

在一个类体的定义中,private 和 public 可以出现多次

结构体的成员缺省为 public,类的成员缺省为 private

private 的意义在于隐藏类的数据和实现,把需要向外暴露的成员声明为 public。

注意:

  • 类的成员可以是变量,也可以是函数。
  • 类的成员变量也叫属性。
  • 类的成员函数也叫方法/行为,类的成员函数可以定义在类的外面。
  • 用类定义一个类的变量叫做创建(或实例化)一个对象。
  • 类的成员变量和成员函数的作用域和生命周期与对象的作用域和生命周期相同。

简单使用类

1)类的成员函数可以直接访问该类其它的成员函数(可以递归)。
2)类的成员函数可以重载,可以使用默认参数。
3)类指针的用法与结构体指针用法相同。
4) 类的成员可以是任意数据类型(类中枚举)。
5)可以为类的成员指定缺省值(C++11 标准)。

6)类可以创建对象数组,就像结构体数组一样。

7) 对象可以作为实参传递给函数,一般传引用。

8)可以用 new 动态创建对象,用 delete 释放对象。

9)在类的外部,一般不直接访问(读和写)对象的成员,而是用成员函数。

10)对象一般不用 memset()清空成员变量,可以写一个专用于清空成员变量的成员函数。

11)对类和对象用 sizeof运算意义不大,一般不用。

12)用结构体描述纯粹的数据,用类描述对象。

13) 在类的声明中定义的函数都将自动成为内联函数;在类的声明之外定义的函数如果使用了inline 限定符,也是内联函数。
14)类的分文件编写。

构造函数

語法:类名(){.....}

  • 访问权限必须是 public。
  • 函数名必须与类名相同。
  • 没有返回值,不写 void。
  • 可以有参数,可以重载,可以有默认参数。
  • 创建对象时会自动调用一次,不能手工调用。

2)析构函数

語法:~类名(){.....}

  • 访问权限必须是 public。
  • 函数名必须在类名前加~。
  • 没有返回值,也不写 void。
  • 没有参数,不能重载。
  • 销毁对象前只会自动调用一次,但是可以手工调用。

注意:

 

 

1) 如果没有提供构造/析构函数,编译器将提供空实现的构造/析构函数。

 

2) 如果提供了构造/析构函数,编译器将不提供空实现的构造/析构函数。

 

3) 创建对象的时候,如果重载了构造函数,编译器根据实参匹配相应的构造函数。

 

4)创建对象的时候不要在对象名后面加空的圆括号,编译器误认为是声明函数。(没有构造函数、构造函数没有参数、构造函数的参数都有默认参数)

 

 

 

5) 在构造函数名后面加括号和参数不是调用构造函数,是创建匿名对象。

6) 接受一个参数的构造函数允许使用赋值语法将对象初始化为一个值(可能会导致问题,不推

荐)。

CGirl girl = 10;+

7) 以下两行代码有本质的区别:

CGirl girl = CGirl("西施"20);// 显示创建对象。<

CGirl girl;

girl = CGirl("西施"20);

11創建対象。←

1/ 创建匿名对象,然后给现有的对象赋值。1

8)用new/delete 创建/销毁对象时,也会调用构造/析构函数。

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

nginx启停操作

一、nginx启动 方式一: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf方式二: systemctl start nginx 查看进程启动状态 ps -ef | grep nginx 上图表示nginx进程启动成功,进程号为30034为主进程(负责链接操作)&am…

2024/3/24--爬虫库

1.常用的爬虫库 (1)在setting的project里面点击Python Interpreter (2)常用的爬虫库有 import requests //用途:用于发送HTTP请求。from bs4 import BeautifulSoup //用于从HTML或XML文档中提取数据。import scrapy //一个功能强大的爬虫框架&#xf…

基于 C++ STL 的图书管理系统213行

定制魏:QTWZPW,获取更多源码等 目录 一、实践项目名称 二、实践目的 三、实践要求 四、实践内容 五、代码框架参考 六、代码效果展示 七、完整代码主函数展示 一、实践项目名称 基于 C STL 的图书管理系统 二、实践目的 通过设计和实现一个基于…

AI之Suno:Suno V3的简介、安装和使用方法、案例应用之详细攻略

AI之Suno:Suno V3的简介、安装和使用方法、案例应用之详细攻略 目录 Suno AI的简介 1、特点与改进: Suno AI的安装和使用方法 1、第一步,让国产大模型—ChatGLM4帮我写一个提示词 2、第二步,将提示词交给Suno v3,…

优秀学员作品:SpringBoot茶叶商城系统源码+运行教程+开发文档(参考论文)

今天发布的是由【猿来入此】的优秀学员独立做的一个基于springboot脚手架的茶叶商城系统,主要实现了茶叶采购,出售茶叶的流程,除基础脚手架外,实现的功能有: 前台 : 首页、商品列表、新闻列表、个人中心、…

python把图片重命名

在Python中,你可以使用os模块来重命名文件,包括图片文件。以下是一个简单的示例,该示例会将指定目录中的所有.jpg图片文件重命名为new_name_1.jpg,new_name_2.jpg,以此类推: import os# 指定图片所在的目录…

【算法】双指针的应用

文章目录 前言1. 移动零(easy)2. 复写零(easy)3. 快乐数(medium)4. 盛水最多的容器(medium)5. 有效三角形的个数(medium)6.和为 s 的两个数字(eas…

计算机网络:传输控制协议(Transmission Control Protocol-TCP协议

计算机网络:传输控制协议(Transmission Control Protocol-TCP协议) 本文目的前置知识点TCP协议简介主要特性通信流程1. 建立连接的过程(三次握手,243)1.1 为什么要三次握手,两次不行吗? 2. 释放连接的过程(…

msvcp110.dll丢失修复办法

在计算机使用过程中,我们经常会遇到一些扩展名为.dll的文件,这些文件是动态链接库文件,用于提供程序运行时所需的函数和资源。其中,msvcp110.dll文件是一个非常重要的动态链接库文件,它属于Microsoft Visual C 2012 Re…

Elastic 线下 Meetup 将于 2024 年 3 月 30 号在武汉举办

2024 Elastic Meetup 武汉站活动,由 Elastic、腾讯、新智锦绣联合举办,现诚邀广大技术爱好者及开发者参加。 活动时间 2024年3月30日 13:30-18:00 活动地点 中国武汉 武汉市江夏区腾讯大道1号腾讯武汉研发中心一楼多功能厅 13:30-14:00 入场 活动流程…

【C++从练气到飞升】06---重识类和对象

🎈个人主页:库库的里昂 ✨收录专栏:C从练气到飞升 🎉鸟欲高飞先振翅,人求上进先读书。 目录 ⛳️推荐 一、再谈构造函数 1. 构造函数体赋值 2. 初始化列表 每个成员变量在初始化列表中只能出现一次--初始化只能初始…

修复JeeSite vue 2.x视图滑动到顶部间距问题:Less文件修改实践

在前端开发中,样式调整是常见且必不可少的任务之一。最近,我在处理JeeSite项目时,遇到了一个视图滑动到顶部时顶部Tabs与页面顶部存在间距的问题。经过深入调查,发现这个问题可以通过修改相应的Less文件来解决。下面,我…

数据结构奇妙旅程之深入解析快速排序

快速排序(Quick Sort)是一种高效的排序算法,它使用了分治法的策略来将一个数组排序。其基本思想是选择一个基准元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比基准元素小,另…

15、Spring Cloud Alibaba Sentinel实现熔断与限流

注:本篇文章主要参考周阳老师讲解的cloud进行整理的! 1、Sentinel 1.1、官网 https://sentinelguard.io/zh-cn/ 等价对标 Spring Cloud Circuit Breaker 1.2、是什么 https://github.com/alibaba/Sentinel/wiki 1.3、去哪下 https://github.com/alibab…

如何在Ubuntu系统使用Docker搭建MongoDB结合内网穿透实现公网连接

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署Mon…

头歌实训--机器学习(决策树)

第1关&#xff1a;决策树简述 第2关&#xff1a;决策树算法详解 import numpy as np from sklearn import datasets#######Begin####### # 划分函数 def split(x,y,d,value):index_a(x[:,d]<value)index_b(x[:,d]>value)return x[index_a],x[index_b],y[index_a],y[inde…

[linux]--关于进程概念(上)

目录 冯诺依曼体系结构 操作系统 概念 设计os的目的 定位 如何理解管理 总结 系统调用和库函数概念 进程 描述进程-pcb 组织进程 查看进程 通过系统调用获取进程标示符 通过系统调用创建进程-fork初识 进程状态 阻塞和挂起 Z(zombie)-僵尸进程 冯诺依曼体系结…

shell实现查询进程号并批量kill(脚本)

问题或需求描述 在shell中&#xff0c;如果你想通过命令行查询出一系列匹配某个关键词的进程&#xff0c;并使用xargs命令批量结束这些进程&#xff0c;可以按照以下步骤操作&#xff1a; # 查询并提取进程号 pgrep -f "关键词" | xargs kill# 或者&#xff0c;如果…

疫情居家办公OA系统设计与实现| Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

常用的Node.js命令集锦

当使用Node.js开发时&#xff0c;以下是一些常用的Node.js命令集锦&#xff1a; npm init 用于初始化一个新的Node.js项目&#xff0c;并创建一个package.json文件来管理项目的依赖和元数据。 npm install [package-name] 用于安装指定的Node.js包&#xff0c;可以通过--save选…