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

基于算法竞赛的c++编程(29)类的概念和简单应用

类的概念

类是面向对象编程(OOP)的基本构建块,用于封装数据(属性)和操作数据的方法(成员函数)。通过类可以创建对象(类的实例),对象具有类定义的属性和行为。类的核心特性包括:

  • 封装:将数据和操作数据的方法绑定在一起,隐藏内部实现细节。
  • 继承:允许一个类继承另一个类的特性,实现代码复用。
  • 多态:同一接口可以表现出不同的行为。

类的定义

在C++中,类通过class关键字定义,语法如下:

class ClassName {
private:    // 私有成员(仅类内部访问)dataType privateMember;
public:     // 公有成员(外部可访问)returnType methodName(parameters) {// 方法实现}
};

简单应用示例

示例1:基本类与对象

定义一个表示矩形的类,包含计算面积的方法:

class Rectangle {
private:double width;double height;
public:void setDimensions(double w, double h) {width = w;height = h;}double getArea() {return width * height;}
};int main() {Rectangle rect;rect.setDimensions(5.0, 3.0);cout << "Area: " << rect.getArea(); // 输出: Area: 15
}

示例2:构造函数

使用构造函数初始化对象:

class Rectangle {
private:double width;double height;
public:Rectangle(double w, double h) : width(w), height(h) {}double getArea() { return width * height; }
};int main() {Rectangle rect(5.0, 3.0);cout << "Area: " << rect.getArea(); // 输出: Area: 15
}

示例3:继承

派生类继承基类的特性:

class Shape {
protected:double area;
public:virtual void calculateArea() = 0; // 纯虚函数
};class Circle : public Shape {
private:double radius;
public:Circle(double r) : radius(r) {}void calculateArea() override {area = 3.14159 * radius * radius;}
};int main() {Circle circle(2.0);circle.calculateArea();
}

应用要点

  • 访问控制publicprivateprotected用于限制成员的访问权限。
  • 成员函数:定义在类中的函数可以直接操作类的数据成员。
  • 对象创建:通过类名实例化对象,调用其公有方法或访问公有属性。
  • 动态内存:类可以管理动态资源(如指针),需注意析构函数和拷贝控制。

通过以上示例和概念,可以逐步掌握类的设计和使用方法。

http://www.xdnf.cn/news/964909.html

相关文章:

  • v-bind 与 v-model 的区别与联系详解
  • python第48天打卡
  • 通过 VS Code 连接 GitLab 并上传项目
  • 第十四届蓝桥杯_省赛B组(C).冶炼金属
  • 【单片机期末】汇编试卷
  • 64页|PPT|基于华为IPD与质量管理体系融合的研发质量管理:L1-L6分层架构驱动高效运营、标准化质量管理体系
  • 【解密LSTM、GRU如何解决传统RNN梯度消失问题】
  • 详解CNN
  • node+express+jwt+sequelize+mysql+本地服务器部署前端+云服务器公网部署:入门教程
  • 线程与进程(java)
  • 解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
  • 数据库——MongoDB
  • 定时器任务——若依源码分析
  • Python包(Package)详解:模块的高级组织方式
  • DeviceNet转Modbus RTU,为纺织厂生产线赋能
  • uniapp的请求封装,如何避免重复提交请求
  • mysql-innoDB存储引擎事务的原理
  • ​​​​​​​未来已来:深度解读 BLE 6.0 的革命性特性与实战应用
  • SkyReels-V1:开启多模态视频生成的新纪元
  • SpringDoc集成到Springboot
  • 第1章信息化知识归纳总结补充内容
  • day52 ResNet18 CBAM
  • Canfestival的移植思想
  • EndNote 21完整安装指南:从零开始的详细步骤(附EndNote下载安装包)
  • HTML 文本省略号
  • HTML 标签 综合案例
  • 在鸿蒙HarmonyOS 5中HarmonyOS应用开发实现QQ音乐风格的播放功能
  • CppCon 2015 学习:Improving the future<T> with monads
  • MinHook 对.NET底层的 SendMessage 拦截真实案例反思
  • PHP和Node.js哪个更爽?