C++ Class 基础

news/2025/3/4 22:37:16/

在 C++ 中,class(类) 是面向对象编程(OOP)的核心概念之一。类用于定义对象的属性和行为,是封装数据和方法的基本单位。以下是 C++ 中类的基础知识。


1. 类的定义

类通过 class 关键字定义,基本语法如下:

class ClassName {// 访问修饰符(public、private、protected)
public:// 公有成员(可以在类外部访问)void publicMethod();private:// 私有成员(只能在类内部访问)int privateData;protected:// 保护成员(可以在派生类中访问)void protectedMethod();
};

2.成员变量和成员函数

class Rectangle {
public:void setDimensions(int w, int h) {width = w;height = h;}int getArea() const {return width * height;}private:int width;int height;
};

3.构造函数和析构函数

class Rectangle {
public:Rectangle(int w, int h) : width(w), height(h) {} // 构造函数~Rectangle() { std::cout << "Rectangle destroyed!" << std::endl; } // 析构函数private:int width;int height;
};

4.this 指针

this 是一个指向当前对象的指针,用于在成员函数中访问当前对象的成员。

class Rectangle {
public:void setWidth(int width) {this->width = width; // 使用 this 指针区分成员变量和参数}private:int width;
};

5.友元

友元函数:可以访问类的私有成员的非成员函数。
友元类:可以访问类的私有成员的另一个类。

class Rectangle {
private:int width;int height;friend void printArea(const Rectangle& rect); // 友元函数
};void printArea(const Rectangle& rect) {std::cout << "Area: " << rect.width * rect.height << std::endl;
}

6.运算符重载

通过重载运算符,可以定义类对象之间的操作。

class Rectangle {
public:Rectangle(int w, int h) : width(w), height(h) {}Rectangle operator+(const Rectangle& other) const { // 重载 + 运算符return Rectangle(width + other.width, height + other.height);}private:int width;int height;
};

7.继承

类可以通过继承扩展功能,支持单继承和多继承。

class Shape {
public:void setColor(const std::string& color) {this->color = color;}protected:std::string color;
};class Rectangle : public Shape {
public:void draw() {std::cout << "Drawing a " << color << " rectangle." << std::endl;}
};

C++ 中的类是面向对象编程的核心,通过类可以实现封装、继承和多态等特性。掌握类的基础知识是学习 C++ 的关键。


http://www.ppmy.cn/news/1576659.html

相关文章

jvm内存不够,怎么重新分配

目录 第一章、问题分析1.1&#xff09;报错提示1.2&#xff09;报错分析 第二章、解决方式2.1&#xff09;修改IDEA的JVM内存设置2.2&#xff09; 修改Spring Boot项目的JVM内存设置 友情提醒: 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接…

ACM-BufferedWriter---格式化输出浮点数

在 Java 中&#xff0c;BufferedWriter 本身不提供格式化功能&#xff0c;但可以结合 String.format() 或 PrintWriter 进行格式化浮点数输出。 方式 1&#xff1a;使用 String.format() import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOExcept…

第二十七天:Scrapy 框架-模拟登录

文章目录 一、Scrapy-Request和Response&#xff08;请求和响应&#xff09; 二、Request对象 三、请求子类 FormRequest对象 1. 请求使用示例 四、响应对象 五、模拟登录 一、Scrapy-Request和Response&#xff08;请求和响应&#xff09; Scrapy的Request和Response对…

js环境/electron环境,使用typeorm+sqlite数据库

大家有任何想法,都可以联系博主沟通。 本系列为实战文章,最终实现的桌面工具软件,获取方式:百度网盘地址:https://pan.baidu.com/s/1yrl0jYpti7QCn8CHBRT2lw?pwd=1234 正文开始 前言一、引读二、哪些人可以参考本文三、使用步骤四、使用typeOrm操作数据库4.1保存和修改数…

LeetCode 88 - 合并两个有序数组

LeetCode 88 - 合并两个有序数组 是非常基础的数组操作题目&#xff0c;考察双指针、逆序操作和空间优化等技巧。这个问题相当经典&#xff0c;对后续的归并排序、多指针问题、双数组相关问题都有指导意义。以下是详细的解法、模板与变体问题讲解。 题目描述 给定你两个有序整…

[IP] DDR_FIFO(DDR3 用户FIFO接口)

IP(DDR_FIFO)将DDR3 IP的用户侧复杂接口修改为简易的FIFO接口&#xff0c;用户侧更加简易例化使用MIG 核 IP介绍 c0_xx (连接DDR app接口) 此IP 仅需根据MIG配置进行有限修改&#xff0c;即可使用&#xff01; 关于IP详细使用说明&#xff0c;参考IP datasheet&#xff01; 示…

c++ Ranges Library使用笔记(简单说明)

c Ranges Library使用笔记&#xff08;简单说明&#xff09; 1. 数值适配器&#xff08;Range Adapters&#xff09;常用数值适配器示例代码 2. 生成器&#xff08;Generators&#xff09;常用生成器示例代码 3. 组合使用示例示例代码 总结数值适配器&#xff08;Range Adapter…

汽车轮胎损伤缺陷分割数据集labelme格式1957张3类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;1957 标注数量(json文件个数)&#xff1a;1957 标注类别数&#xff1a;3 标注类别名称:["cut","indentation",&quo…