当前位置: 首页 > news >正文

C++基础学习记录—类

1、面向对象的三大特征:封装、继承、多态

2、类和对象

        2.1、类的概念

类:类是一个抽象的概念,用于描述同一类对象的特点。

对象:根据类的概念所创造的实体。

类中包含属性和行为

属性:描述类的数据,一般都是名词

行为:描述类的具体操作,一般都是动词

        2.2、类的实现

类是使用关键字class修饰的,包含两方面内容:

1、行为,通过函数实现,也被称为“成员函数"。

2、属性,保存一些数据元素,也被称为“成员变量"。

#include <iostream>
#include <string>
using namespace std;class Phone
{
public:string brand;string color;int price;void play_game(){cout << "打游戏" << endl;}void listen_music(){cout << "听音乐" << endl;}void watch_video(){cout << "看电影" << endl;}
};
int main()
{Phone P1;//创建栈内存对象P1.brand="小米";P1.color="黑色";P1.price=5999;cout << P1.brand << " " << P1.color << " " << P1.price << " " << endl;P1.play_game();P1.listen_music();P1.watch_video();Phone* P2=new Phone;//创建堆内存对象P2->brand="苹果";P2->color="白色";P2->price=6999;cout << endl << P2->brand << " " << P2->color << " " << P2->price << " " << endl;P2->play_game();P2->listen_music();P2->watch_video();delete P2;P2 =NULL;//需要释放堆内存对象空间return 0;
}

        2.3、类的实例化

由类创建对象的过程叫类的实例化。

对象分为两种:栈内存对象 and 堆内存对象

1、栈内存对象

用 . 的方式调用成员,对象所在的{ }执行完毕后,自动被销毁

2、堆内存对象

用new关键字创建,对象类型的指针(Computer *) ,指向new关键字开辟的空间。使用->的方式进行调用,堆内存对象需要使用delete关键字手动销毁,如果不销毁会造成内存泄漏,导致程序的卡顿。用delete关键字进行销毁,并把对象指针置为NULL.

3、封装

一般情况下,会把类中的属性或者特征进行封装。通常是把类中的属性变为私有(private),如果外部访问需要公共接口,可以控制属性的读和写的权限,提高了程序的安全性

#include <iostream>
#include <string>using namespace std;//类的封装,如果外部访问需要公共接口,可以控制属性的读和写的权限
class Person
{
private: //权限:private(私有)是最封闭的权限,只能在类内访问string uname;int age;public://权限  公共权限 类内类外都可以访问//设置姓名和年龄读权限string get_name(){return uname;}int get_age(){return age;}//设置姓名和年龄写权限void set_name(string n){uname =n;}void set_age(int a){age =a;}
};
int main()
{Person people;people.set_name("Nancy");people.set_age(25);cout << " 姓名:" << people.get_name();cout << " 年纪:" << people.get_age();return 0;
}

上述代码定义了人类的属性:姓名和年纪,都进行了封装,在类外部修改不了该属性,QT页面定义的属性是上锁状态,只能通过公共的借口来进行读写。

 

http://www.lryc.cn/news/534977.html

相关文章:

  • 云原生时代的后端开发:架构、工具与最佳实践
  • ARM Cortex-M3/M4 权威指南 笔记【一】技术综述
  • 12.项目结构
  • 保研考研机试攻略:python笔记(4)
  • 高阶C语言|枚举与联合
  • 【天梯赛】L1-104 九宫格(C++)
  • 现代C++多线程基础 -忆苦思甜pthread_mutex
  • soular基础教程-使用指南
  • 网络安全网格架构(CSMA) 网络安全框架csf
  • 基于DeepSeek API和VSCode的自动化网页生成流程
  • 【AI时代】Page Assist - 本地 AI 模型的 Web UI (谷歌浏览器) 本地DeepSeek启用联网功能
  • 电脑IP地址自定义
  • python卷积神经网络人脸识别示例实现详解
  • EX_25/2/11
  • 二.2 整数表示(2.1-2.4)
  • 中间件-安装Minio-集成使用(ubantu-docker)
  • 夸克网盘多链接批量保存,自动同步更新,批量分享
  • 2025清华:DeepSeek从入门到精通.pdf(附下载)
  • 【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)
  • android动态设置是否允许应用卸载
  • 基于微信小程序的博物馆预约系统的设计与实现
  • 使用NPOI自定义导出excel文件
  • 基于vue2 的 vueDraggable 示例,包括组件区、组件放置区、组件参数设置区 在同一个文件中实现
  • 使用rknn进行facenet部署
  • #渗透测试#批量漏洞挖掘#29网课交单平台 SQL注入
  • 百问网imx6ullpro调试记录(linux+qt)
  • 【python】3_容器
  • 数据结构与算法:动态规划dp:背包问题:理论基础(状态压缩/滚动数组)和相关力扣题(416. 分割等和子集、1049.最后一块石头的重量Ⅱ、494.目标和)
  • 数字游牧时代:IT人力外包的范式革命与文明重构
  • Qt - 地图相关 —— 3、Qt调用高德在线地图功能示例(附源码)