C++ 类和对象-改

在C++中,类(Class)是用户自定义的数据类型,用来封装数据和功能的结合。而对(Object)是类的实例,通过类的定义可以创建多个对象。C++是一种面向对象编程语言,类和对象是其核心概念。

1. 类的定义

类是一种用户自定义的类型,它定义了数据成员(属性)和成员函数(方法)。类的定义通常以关键字class开始,后面跟随类名。类定义的格式如下:

cpp 复制代码
class 类名{
public:
    // 通常定义函数,也可定义属性
private:
    // 通常定义属性,也可定义函数
protected:
    // 用的比较少
}

在public和private中都可以定义属性和方法,根据自己的需求进行选择。

  • public: 公有访问权限,类外部的代码可以访问这些成员。
  • private: 私有访问权限,类外部无法直接访问这些成员。
  • protected: 受保护访问权限,允许继承的子类访问。

2. 类的成员

类里面可以包含以下两种成员:

  1. 数据成员:用来存储数据或对象的状态;

  2. 成员函数:用来定义类的功能或行为(方法)。

示例:

cpp 复制代码
class Person {
public:
    // 数据成员
    string name;
    int age;

    // 成员函数
    void setData(string n, int a) {
        name = n;
        age = a;
    }

    void display() {
        cout << "Name: " << name << ", Age: " << age << endl;
    }

private:
    string id; // 私有数据成员
};

3. 创建对象

对象是类的一个实例化对象,创建格式为:类名 变量名称;

例如:

cpp 复制代码
    Person person1;
    person1.setData("Alice", 25);  // 通过成员函数设置数据
    person1.display();  // 调用成员函数

在这个示例中,person1是Person类的一个对象,通过person1可以访问类的公共成员和成员函数。

4. 构造函数与析构函数

  • 构造函数(Constructor): 是一个特殊的成员函数,在创建对象时自动调用。它的名称与类名相同,不需要返回类型。
  • 析构函数(Destructor) : 也是一个特殊的成员函数,在对象被销毁时自动调用。它的名称与类名相同,前面加上波浪号~

5. 访问控制

C++提供了三种访问控制修饰符:

  • public: 公共成员可以被任何代码访问。
  • private: 私有成员只能被类的内部访问,外部不能直接访问。
  • protected: 受保护成员可以被类的子类访问,但不能被其他代码访问。

6. 类的继承

继承允许从现有的类创建新类。新类继承了基类的属性和方法,可以对其进行扩展和修改。

在这个例子中,Derived类继承了Base类的所有公共成员。

7. 多态、封装和继承

C++的三大核心特性:

  • 封装: 通过类封装数据和行为,限制对数据的直接访问。
  • 继承: 允许新类继承现有类,促进代码重用。
  • 多态: 允许使用相同的接口执行不同的操作(如虚函数、函数重载)。

8. 总结

  • 是C++中的用户定义数据类型,用于封装数据和行为。
  • 对象是类的实例,通过对象可以访问类的成员。
  • 访问控制允许对类成员进行访问限制,提高数据的安全性。
  • 构造函数 用于初始化对象,析构函数用于清理资源。
相关推荐
运维行者_10 分钟前
OPM 与传统管理工具的区别,在网络修复与自动化运维方面的优势在哪里?
运维·服务器·开发语言·网络·自动化·php·ssl
广州灵眸科技有限公司35 分钟前
瑞芯微(EASY EAI)RV1126B 音频输入
linux·开发语言·网络·音视频
XFF不秃头1 小时前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
吃喝不愁霸王餐APP开发者1 小时前
基于Spring Cloud Gateway实现对外卖API请求的统一鉴权与流量染色
java·开发语言
王老师青少年编程1 小时前
csp信奥赛C++标准模板库STL案例应用3
c++·算法·stl·csp·信奥赛·lower_bound·标准模版库
有为少年2 小时前
Welford 算法 | 优雅地计算海量数据的均值与方差
人工智能·深度学习·神经网络·学习·算法·机器学习·均值算法
心疼你的一切2 小时前
三菱FX5U PLC与C#通信开发指南
开发语言·单片机·c#
Tim_102 小时前
【C++入门】04、C++浮点型
开发语言·c++
Ven%2 小时前
从单轮问答到连贯对话:RAG多轮对话技术详解
人工智能·python·深度学习·神经网络·算法
山楂树の2 小时前
爬楼梯(动态规划)
算法·动态规划