C++类的入门

C++类

一:类的简介:

C++的类是一种用户定义的数据类型,用于封装数据和方法。它是面向对象编程的基本概念,允许程序员将数据和操作数据的方法组合在一起。类可以包含成员变量和成员函数,用于描述对象的属性和行为。通过类的实例化,可以创建对象并使用对象的方法操作数据。类是C++中面向对象编程的基础,能够提高代码的可重用性和可维护性。
从功能上来看,类有点类似于结构体,但是它们有一定的区别,主要表现为:
1.默认的不同:
c++中结构体默认为类的public属性,即允许外部使用,而类在不声明时,默认为private属性,即仅内部可用。
2.功能的不同:
类可以有访问控制修饰符,如public、private和protected,而结构体不支持。

二:类的定义:

class p {//类名
public:
​
private:
};
  1. public:public成员在类的外部可以被访问。这意味着任何对象都可以访问public成员变量和成员函数。在类的外部,可以直接使用对象名和成员名来访问public成员。
  2. private:private成员只能在类的内部访问,外部的代码不能直接访问private成员。只有类的成员函数可以访问private成员。这样可以保护数据,只允许类的内部进行操作,避免外部代码对类的数据进行不当的修改。

三:类的初始化:

3.1.在C++11及更高版本,可以在定义时直接对public成员进行初始化:
#include <iostream>
#include <string>
using namespace std;
class p {
public:int name;int age;
private:};
int main() {p person1 = { 1,2 };cout << person1.age;return 0;
}
注意:
1.系统会按照顺序对public成员进行赋值,{}内部数字不能超过public的成员数目,但是可以少于,少于自动补0。
2.外部无法访问到private,所以,该操作仅仅对public成员有效。
3.2:利用'.'直接访问成员或成员函数进行初始化:
#include <iostream>
#include <string>
using namespace std;
class p {
public:int name;int age;void setscore(int x) {score = x;}
​
private:int score;
};
int main() {p person1;person1.name = 1;person1.age = 18;person1.setscore(100);cout << person1.age;return 0;
}
利用这种方法进行初始化较1更加方便,且可以通过这种方法对private成员进行赋值。同理,也可以用这种方法输出private中成员的值:
#include <iostream>
#include <string>
using namespace std;
class p {
public:int name;int age;void setscore(int x) {score = x;}int getscore(void){return score;}
private:int score;
};
int main() {p person1;person1.name = 1;person1.age = 18;person1.setscore(100);cout << person1.getscore();return 0;
}
3.3:利用类的构造函数进行初始化:
#include <iostream>
#include <string>
using namespace std;
class p {
public:p(string name, int age) :name_(name), age_(age) {cout << name_ << age_;}
private:int score;int age_;string name_;
};
int main() {p person1("shelly", 18);return 0;
}
当然也可以这样写:
#include <iostream>
#include <string>
using namespace std;
class p {
public:p(string name, int age){name_ = name;age_ = age;cout << name_ << age_;}
private:int score;int age_;string name_;
};
int main() {p person1("shelly", 18);return 0;
}
还可以这样:
#include <iostream>
#include <string>
using namespace std;
class p {
public:p(string name, int age){name_ = name;age_ = age;cout << name_ << age_;}
private:int score;int age_;string name_;
};
int main() {p person1 = { "xlx",18 };return 0;
}
注意:
1.该构造函数应该在类的public部分,才能被外部使用。
2.构造函数是没有类型的。
3.构造函数的名称与类名称相同。
4.构造函数与函数一样,不能像第1种方法一样,少于参数的数量,否则会报错。且存在构造函数时,用{}进行初始化,默认是使用构造函数,而不是方法1。

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

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

相关文章

美创荣登“2023大数据产业年度最具投资价值”榜单

近日&#xff0c;由上海市经济和信息化委员会、上海市科学技术委员会指导&#xff0c;数据猿和上海大数据联盟主办的“第六届金猿季&魔方论坛——大数据产业发展论坛”在沪隆重召开&#xff0c;并重磅揭晓《2023大数据产业年度最具投资价值》榜单。 美创科技凭借在数据安全…

k8s-kubectl常用命令

一、基础命令 1.1 get 查询集群所有资源的详细信息&#xff0c;resource包括集群节点、运行的Pod、Deployment、Service等。 1.1.1 查询Pod kubectl get po -o wid 1.1.2 查询所有NameSpace kubectl get namespace 1.1.3 查询NameSpace下Pod kubectl get po --all-namespaces…

JAVA 学习 面试(二)多线程篇

Java多线程 线程池 线程池原理 创建方式&#xff1a;newFixedThreadPool (固定数目线程的线程池)、newCachedThreadPool(可缓存线程的线程池)、newSingleThreadExecutor(单线程的线程池)、newScheduledThreadPool(定时及周期执行的线程池)、new ThreadPoolExecutor() &#x…

Elasticsearch 常用信息

简述 本文针对 Elasticsearch&#xff08;简称ES&#xff09;集群6.x版本出现故障时&#xff0c;可通过提供的命令进行排查。 1、集群健康状态 集群健康状态状态说明red不是所有的主要分片都可用。表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失…

AI破局之路:一名猎头高管的AI自学之旅——公众号

AI破局之路&#xff1a;一名猎头高管的AI自学之旅——公众号。 我是周知&#xff0c;有8年猎头行业经验深耕各类顶级科技企业。 2023年&#xff0c;应该有很多同行离开这个行业吧. 毕竟我们面临着前所未有的挑战。猎头行业的每一个参与者&#xff0c;无论是初入职场的猎头新人、…

2024最新科普:文件加密软件功能大盘点

随着信息化时代的到来&#xff0c;数据安全问题越来越受到人们的关注。 文件加密作为一种重要的数据保护手段&#xff0c;被广泛应用于企业和个人用户中。 本文将对文件加密软件的功能进行大盘点&#xff0c;帮助大家了解这一安全领域的知识。 一、文件加密软件的定义 文件加…

【issue-halcon例程学习】measure_arc.hdev

例程功能 检查倒角后铸件的细长孔之间的距离。 代码如下 read_image (Zeiss1, zeiss1) get_image_size (Zeiss1, Width, Height) dev_close_window () dev_open_window (0, 0, Width / 2, Height / 2, black, WindowHandle) set_display_font (WindowHandle, 14, mono, true,…

《代码之丑》学习笔记15——新需求破坏了代码,怎么办?

15 | 新需求破坏了代码&#xff0c;怎么办&#xff1f; 文章目录 15 | 新需求破坏了代码&#xff0c;怎么办&#xff1f;一次驳回的实现 一次定时提交的实现总结时刻 前面文章讲的所有坏味道都是告诉你如何在已有的代码中发现问题。不过你要明白&#xff0c;即便我们能够极尽所…

【STM32】USB程序烧录需要重新上电 软件复位方法

文章目录 一、问题二、解决思路2.1 直接插拔USB2.2 给芯片复位 三、解决方法3.1 别人的解决方法3.2 在下载界面进行设置 一、问题 最近学习STM32的USB功能&#xff0c;主要是想要使用虚拟串口功能&#xff08;VCP&#xff09;&#xff0c;发现每次烧录之后都需要重新上电才可以…

FRRouting学习(一) 配置日志文件

以配置isis event事件日志为例 1、在配置之前&#xff0c;/var/log/frr路径下是没有文件的&#xff1a; 2、在vtysh config之下输入&#xff1a;log file /var/log/frr/isisd.log debugging 后面的debugging表示日志级别&#xff0c;可以根据自己修改 3、配置好了之后&#xf…

Operation

contents 服务器一、相关概念1.1 云服务器与实例1.2 关于域名解析延时与80端口1.3 关于备案1.4 关于SSL证书1.5 关于SSL证书的签发1.6 关于SSL证书的部署1.7 关于LNMP和LAMP1.8 关于bt面板 二、单服务器单一级域名多网站2.1 创建多个二级域名2.2 解析二级域名绑定到服务器上2.3…

基于SpringBoot Vue求职招聘系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

codeforces 1354B

思维题 题目链接 题目大意 给定一个只包含 1 , 2 , 3 1,2,3 1,2,3的字符串&#xff0c;输出包含 1 , 2 , 3 1,2,3 1,2,3最短字串的长度 思路 重点是三个字符的位置&#xff0c;我们用三个变量来定义三个位置&#xff0c;用一个指针遍历数组不断更新三个位置&#xff0c;每次…

工业设备管理系统:助力企业实现数字化转型

随着工业4.0和智能制造的快速发展&#xff0c;数字化转型已成为企业提升竞争力、适应市场变化的必然选择。工业设备管理系统作为数字化转型的关键组成部分&#xff0c;能够为企业提供实时监控、数据分析、预警和远程控制等功能&#xff0c;助力企业实现数字化转型的目标。 一、…

debian12.4配置

文章目录 debian12.4配置概述笔记将非root用户添加到sudo组更换国内源配置ssh的客户端访问关闭屏保END debian12.4配置 概述 在虚拟机中装了一个debian12.4, 想配置ssh客户端连接, 出了问题. 配置乱了, 还好长了个心眼, 做了快照. 发现2个问题: debian12.4默认安装完, 有ss…

mysql生成最近24小时整点时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

java实现.net中byte和int转化的方法:BitConverter.GetBytes【验证可用】

背景 今天改造.net的代码发现一个工具类在java中找不到对应的默认函数&#xff0c;索性自己写一个&#xff0c;验证可用。 1、整数转为字节数组 public static byte[] toByteArray(int value) { return new byte[] { (byte) ((value >> 24) & 0xFF), (byte) ((v…

LINUX服务之YUM仓库

1. YUM概述 YUM基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 YUM支持软件源 搭建yum支持的的软件源主要有以下三种&#xff1a; 本地yum&#xff1a;file&#xff1a;//… 网络yum&#xff0c;又分为HTTP服务器&#xff1a;http…

UE5.2、CesiumForUnreal实现加载GeoJson绘制单面

文章目录 前言一、实现目标二、实现过程1.实现原理2.数据读取3.三角剖分3.具体代码 4.蓝图测试 前言 UE5、CesiumForUnreal实现加载GeoJson绘制单面&#xff08;Polygon&#xff09;功能&#xff08;StaticMesh方式&#xff09; 一、实现目标 通过读取本地的Geojson数据&…

IP地址组成

一、简介 ​ IP地址由四段组成&#xff0c;每个字段是一个字节&#xff0c;即4个字节、 每个字节有8位&#xff0c;最大值是255(256&#xff1a;0~255)&#xff0c;是全世界范围是唯一的 32 位&#xff08;4个字节 * 8位&#xff09;的标识符。 ​ IP地址由两部分组成&#x…