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

C++之类和对象

什么是类和对象

C++是一种面向对象的编程语言,其中类和对象是面向对象编程的基本概念之一。

C++面向对象的三大特性为:封装、继承、多态,C++认为万事万物都皆为对象,对象上有其属性和行为。

举个例子:大伙的女朋友可以抽象为一个女朋友类,属性有姓名、年龄、身高、体重…,行为有唱、跳、rap…,而你的女朋友就是对象,具体的姓名叫做小芳,年芳18,黄金身材。这就是类的具体化,也叫作实例化过程。

如何创建一个类

如何创建一个类| 基本语法

在C++中,我们可以使用关键词 class 来创建一个类。下面是一个简单的类的定义示例:

这个类叫做 GirlFriend,包含了两个属性 m_name 和 m_age,以及三个方法 sing(),jump(),rap()。类中声明,类外实现的函数必须用类名限定,其中 public,protected,private 是访问控制修饰符

如何创建一个类| 访问控制修饰符

在C++中,有三个访问控制修饰符:public、private 和 protected。它们的作用是限制对象的属性和方法在哪些地方可以被访问。

目前来说只需要知道,类外对象只能访问public下面的属性和方法。protected和private都不可访问,后续继承中protected和private会有所不同。

如何创建对象和访问数据

C++对象的创建是由构造函数完成的,下一章节做详细讲解,目前学会创建无参对象即可,创建一个无参对象的方法很简单,把类名当做一个新的数据类型即可,一般有以下两种方式

C++类的对象访问属性和方法非常简单,和C语言结构体一样的方式,如果是普通对象用.访问,如果是对象指针用->访问。如下测试代码:

#include #include class GirlFriend { int m_money; public: void sing() { std::cout << "Sing" << std::endl; } protected: std::string m_name; private: int m_age; }; int main() { //new一个对象 GirlFriend* p = new GirlFriend; //创建一个对象 GirlFriend object; //外部访问:只能访问public属性 p->sing(); object.sing(); //默认属性是private不可访问 //以下代码错误 //object.m_money; return 0; }

三种属性操作

C++类中属性的初始化通常是由构造函数完成,暂时没讲构造函数,可以看看以下三种属性操作方式:

如下测试代码:

#include #include class GirlFriend { //1.直接给默认值 int m_money=0; public: //2.传参操作数据 void setData(std::string name, int age, int money) { m_name = name; m_age = age; m_money = money; } //3.返回引用 std::string& getName() { return m_name; } int& getAge() { return m_age; } int& getMoney() { return m_money; } void print() { std::cout << m_name<<"\t"<< m_age<<"\t"<< m_money << std::endl; } protected: std::string m_name="默认"; private: int m_age=0; }; int main() { GirlFriend object; object.print(); object.setData("baby", 18, 100); object.print(); object.getName() = "moying"; object.getAge() = 16; object.getMoney() = 100; object.print(); return 0; }

运行结果如下:

相关

如果阁下正好在学习C/C++,看文章比较无聊,不妨关注下关注下小编的视频教程,通俗易懂,深入浅出,一个视频只讲一个知识点。视频不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势。

http://www.jsqmd.com/news/619598/

相关文章:

  • AI 短剧系统私有化部署,搭建企业专属 AI 制片厂
  • 锂电池建模到底怎么玩?今天咱们来拆解二阶RC模型(也就是常说的二阶戴维南模型)。这个模型就像给电池拍X光片,把复杂的电化学反应翻译成电工能看懂的电路元件
  • Ragent day-03 RAG
  • AI建站工具选型指南:五维评估法与不同模式对比
  • 保姆级教程:手把手教你查看FortiGate防火墙的‘固件和通用更新’服务状态
  • 基于OneNet的智能家居安防系统
  • Openlaw语音控制之语音命令语法设计最佳实践
  • 免杀手法 ---> 重写R3API 一些思路给你说说看
  • 【Agent-阿程】AI先锋杯·14天征文挑战第14期-第3天-大模型应用开发实战
  • 张祥前统一场论7.0(11-14章)
  • 零基础入门大模型:20个核心概念解析(收藏版)
  • 嵌入式学习——Linux驱动(1)
  • FPGA综合工具Vivado/Quartus报‘Timing Loop’别慌:手把手教你定位并拆解这个Verilog‘死循环’
  • OpenClaw Skills 开发实战笔记
  • Qwen3-14B私有部署镜像YOLOv11目标检测结果报告智能生成
  • AI原生分支策略失效预警:Feature Branch vs. Model-First Trunk-Based Development对比实测
  • OpenClaw+千问3.5-9B:自动化投资信息收集
  • JSON文件和镜像python文件编写
  • 【Agent-阿程】Agent智能体开发实战指南
  • uniapp地图开发实战:marker聚合与点击事件优化指南
  • Qt图形界面开发:打造GME-Qwen2-VL-2B模型本地化部署与管理桌面工具
  • 如何让Windows 11摆脱臃肿?Win11Debloat帮你一键瘦身
  • Pixel Couplet Gen 商业授权作品集:为品牌方定制的像素风新春营销素材
  • 企业级OpenClaw集中部署安全架构避坑全攻略
  • 电子凸轮追剪曲线生成算法探秘:麦格米特版实践
  • 315/433MHZ无线遥控接收解码源程序 Keil源程序及AD格式电路图
  • AD7712实战:如何用MSP430搞定Σ-Δ型ADC的数据采集(附完整代码)
  • Citra模拟器终极指南:5步快速上手与问题解决教程
  • DeepSeek-OCR-2跨平台应用:移动端文档扫描方案
  • 【GUI-Agent】阶跃星辰 GUI-MCP 解读---()---HITL(Human In The Loop)贡