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

C++ 教程 - 04 类的使用

文章目录

  • 类的定义
  • 类定义案例
  • 构造函数

类的定义

C++ 在 C 语言的基础上增加面向对象编程,类是用于指定对象的形式,是一种用户自定义的数据类型,封装了数据和函数。类可以被看作是一种模板,可以用来创建具有相同属性和行为的多个对象。

  • class 关键字定义类,相当于在结构体中加入方法;
    • 花括号内定义成员变量、成员方法,并且分块表示,每块使用public/private/protected关键字修饰
  • 最后以分号结束
  • 访问修饰符
    • public,公有访问,最大的访问权限,对象可以直接调用属性、方法;
    • protected,受保护的访问,只能在类内部访问,对象无法调用;可以被子类继承,并在子类内部访问;
    • private, 私有访问,只能在类内部访问,对象无法调用;可以被子类继承,但子类内部也无法访问
  • 使用冒号表示继承;
    • class Dog : public Animal { }; 公有继承,访问权限不变;
    • class Dog : protected Animal { }; 受保护的继承,public 访问模块变成 protected
    • class Dog : private Animal { }; 私有继承,继承下来的全部为私有访问权限;

在这里插入图片描述
 

类定义案例

#include <iostream>
#include <string>
#include <math.h>
using namespace std;// 类的声明 一般在头文件
class Stu {public: // 公有权限 接口const string& getName() const { // const 表示常量成员函数 (只读,不会改变实例对象的任何数据)return name; // this指针指向当前实例对象,可以省略   this->name;// 返回name的常量引用,避免值拷贝的内存消耗}void setName(const string& name) {// 直接访问当前对象 的属性this->name = name;}private: // 数据放在 私有访问 块string name;
};int main() {// 创建对象Stu stu;// 设置名字stu.setName("jack");string name = stu.getName();cout << "got name:" << name << endl;return 0;
}

 

构造函数

  • 创建对象时,对其初始化
#include <iostream>
#include <string>
#include <math.h>
using namespace std;// 类的声明 一般在头文件
class Stu {public: // 公有权限 接口Stu() { // 无参构造函数,无返回值cout << "创建对象时,初始化对象" << endl;};// 重载构造函数(参数列表不同)Stu(const string& name) {this->name = name;}const string& getName() const { // const 表示常量成员函数 (只读,不会改变实例对象的任何数据)return name; // this指针指向当前实例对象,可以省略   this->name;// 返回name的常量引用,避免值拷贝的内存消耗}void setName(const string& name) {// 直接访问当前对象 的属性this->name = name;}private: // 数据放在 私有访问 块string name;
};int main() {// 创建对象Stu stu("lauf");string name = stu.getName();cout << "got name:" << name << endl;return 0;
}
http://www.lryc.cn/news/380835.html

相关文章:

  • excel按模板文件导出多个文件并压缩为ZIP格式返回前端
  • 自动驾驶仿真测试用例表格示例 ACC ELK FCW
  • 数组 (java)
  • 时序预测 | Matlab基于Transformer多变量时间序列多步预测
  • suuk-s.php.jpg-python 库劫持
  • python3GUI--ktv点歌软件By:PyQt5(附下载地址)
  • opencascade AIS_InteractiveContext源码学习2
  • scale()函数详解
  • 计算机基础学习有多重要?学哪些?如何学?
  • Oracle day9
  • Race Condition竞争条件
  • docker 删除本地镜像释放磁盘空间
  • JVM中的垃圾回收器
  • 记录一些可用的AI工具网站
  • vue3页面传参
  • QNX OS微内核系统
  • ViT:5 Knowledge Distillation
  • 2024头歌数据库期末综合(部分题)
  • 【Flask】学习
  • 图像数字化基础
  • 让你的Python代码更简洁:一篇文章带你了解Python列表推导式
  • 基于Matlab的BP神经网络的车牌识别系统(含GUI界面)【W7】
  • jetpack compose的@Preview和自定义主题
  • Temu(拼多多跨境电商) API接口:获取商品详情
  • ArcGIS Pro SDK (五)内容 2 工程项
  • 【ai】初识pytorch
  • pcl::PointXYZRGBA造成点云无法显示
  • 【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)
  • kubesphere踩过的坑,持续更新....
  • 做Android开发怎么才能不被淘汰?