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

C++中的类

类是C++中的核心编程概念,用于封装数据(成员变量)和操作数据的方法(成员函数),是面向对象编程的基础

类的基本结构

class ClassName {
private:// 私有成员(仅在类内访问)public:// 公有成员(类外可访问)protected:// 受保护成员(派生类可访问)
};

类的组成要素

  • 成员变量(属性):描述对象的特征
  • 成员函数(方法):定义对象的行为
  • 访问修饰符
    • private:仅类内部可见
    • protect:类内部及派生类可见
    • public:可被外部访问

类的特性

  1. 封装

    • 将数据和方法捆绑在一起,隐藏内部实现细节
    • 通过private保护数据,提供公共接口(如Getter/Setter
  2. 构造函数和析构函数

    • 构造函数:初始化对象
    • 析构函数:对象销毁时自动调用
  3. this指针

    • 指向当前对象的指针,用于区分成员变量和局部变量
    void setName(string name) { this->name = name; }
    
  4. 静态成员

    • 静态成员变量:所有对象共享同一数据
    static int count; // 在类外初始化:int Student::count = 0;
    
    • 静态成员函数:属于类而非对象,只能访问静态成员变量
    static void getCount() { cout << count; }  // 只能访问静态成员变量
    
  5. 常成员与常对象

    • 常成员函数:不能修改对象状态(即成员变量),只能调用其它常成员函数
    string getName() const { return name; }  // 注意const的位置不是在前面
    
    • 常对象:只能访问常成员函数
    const Student stu("Bob", 22);  // 定义常对象的时候使用const限定符
    

实例代码

#include <iostream>
#include <string>using namespace std;class Student {
private:string name;int age;static int count;  // 定义静态成员变量,需要在类外初始化	public:Student(string n, int a) : name(n), age(a) {}  // 构造函数~Student() {  // 析构函数,对象销毁时自动调用cout << "object destroyed" << endl;}void display() {cout << "name: " << name << ", age:" << age << endl;}static void getCount() {cout << "count: " << count << endl;}void setName(string name) {  // 参数名称与类的成员变量名称相同,使用this指针区别this->name = name;  // 如果传入的参数名称不是name,此处可以不适用this指针}string getName() {return name;}
};int Student::count = 10;  // 类外初始化类的静态成员变量int main() {Student stu("alice", 10);stu.display();Student::getCount();return 0;
}

继承

允许派生类继承基类的成员,实现代码复用

class Undergraduate : public Student {
private:string major;
public:Undergraduate(string n, int a, string m) : Student(n, a), major(m) {}
};

多态

通过虚函数实现运行时多态

class Animal {
public:virtual void speak() { cout << "Animal sound!" << endl; }
};class Dog : public Animal {
public:void speak() override { cout << "Woof!" << endl; }
};

友元

允许非成员函数或其它类访问私有成员

class Teacher {friend void printTeacher(Teacher t); // 友元函数
};

运算符重载

class Complex {
public:Complex operator+(const Complex& other) {  // operator关键字加上要重载的运算符return Complex(real + other.real, imag + other.imag);}
};

总结

C++中的类是实现面向对象编程的基石,通过封装、继承和多态等特性,能够构建复杂且可维护的软件系统。掌握类的设计和使用是C++开发者的核心技能之一。

http://www.dtcms.com/a/482224.html

相关文章:

  • 网站上线 流程wordpress禁止加载谷歌字体
  • 阿里云是做网站的吗榆林公司做网站
  • 2018年10月江苏省自考《信息组织》试题
  • 跨域处理的核心是解决浏览器的“同源策略”限制,主流方案
  • Web 开发 30
  • 小迪web自用笔记62
  • Nginx 代理 WebSocket 失败排查全过程:从 426 到连接成功的完整复盘
  • multi-head attention 多头注意力实现细节
  • 第七章 完整的模型训练
  • 08-Vue3组合式API最佳实践指南
  • 山东网站建设网站做全世界的生意的网站
  • 【文献分享】通过基于大型语言模型嵌入的蛋白质的 k 均值聚类来探索同源性检测
  • Redis 黑马点评-优惠券秒杀
  • 网站页面示意图怎么做宁波北仑做网站
  • ffmpeg转化mp3至wav格式
  • 不同类型的 3D 文件格式
  • ElasticSearch 实战:全文检索与数据聚合分析的完整指南​
  • Day62 设备驱动程序开发基础与LED控制
  • 支持Word (doc/docx) 和 PDF 转成一张垂直拼接的长PNG图片工具类
  • JAVA同城预约服务家政服务美容美发洗车保洁搬家维修家装系统源码小程序+公众号+h5
  • 正规拼多多代运营公司如何优化网站结构
  • 三层前馈神经网络实战:MNIST手写数字识别
  • 深度学习(四)
  • 学习HAL库STM32F103C8T6(MQTT报文)
  • 【C++】C++11特性学习(1)——列表初始化 | 右值引用与移动语义
  • 网站布局 种类手机商城页面设计
  • 如何建设手机端网站电力公司建设安全文化
  • 红色 VR 大空间:技术赋能红色文化传承的运营价值与实践路径
  • 网络协议工程 - eNSP及相关软件安装 - [eNSP, VirtualBox, WinPcap, Wireshark, Win7]
  • WHAT - 前端性能指标(交互和响应性能指标)