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

C++学习-类+对象+函数

面向对象C++编程基础

目录

  1. 类与对象
    • 对象
  2. 如何创建自己的类
    • 类的定义
    • 公有和私有
  3. 如何使用一个类
  4. 构造函数
    • 无输入值的构造函数
    • 有输入值的构造函数
  5. 析构函数
  6. 常成员函数 const

1. 类与对象

在编程中,类是一种封装数据和操作这些数据的方法的蓝图。例如,整数类 int、浮点数类 float、字符类 char 都是系统自带的类。

对象

对象是类的一个实例。创建自己的类可以定义自己的对象,比如学生类 student

2. 如何创建自己的类

类的定义

class student {
    string name;
    int age;
};

类名: student
成员数据: name, age

公有和私有

class student {
public:
    string name;
private:
    int age;
};

公有:
public
name 是公有的,可以在类外部读写 name 的值。

私有:
private
age 是私有的,外部不可见,避免乱改。

3. 如何使用一个类

在主函数 main 里:

student a;
a.age = 20;

创建一个 student 类的对象,名字叫 a,给 aage 属性赋值 20。

4. 构造函数

构造函数的本质是对象初始化,属性可以有默认值。注意:构造函数名字和类名一样。

无输入值的构造函数

class student {
public:
    int age;
    string name;
    student(); // 无输入值和返回值,名字=类名
    student(int a, string b); // 重载,有两个输入参数,age, name
};

student::student() {
    age = 20;
    name = "张三";
}

主函数中:

student a;

新建 student 类的对象,名字叫 a,构造函数会自动设置 age=20, name="张三"

有输入值的构造函数

student::student(int a, string b) {
    age = a;
    name = b;
}

调用:

student bb(25, "李四");

5. 析构函数

析构函数用于销毁那些一直在内存里的数据。

student* p = new student(20, "张三");
delete p; // 调用析构函数,删除 "20", "张三"

6. 常成员函数 const

常成员函数用于只读属性,不修改属性。

class student {
public:   
    int age;
    string name;
    bool set(int i); // 成员函数声明
    bool read() const; // 不同在于后面加 const
};

bool student::read() const {
    cout << name;
    return true;
}

调用:

student a;
a.read();

可以不用 const 函数,普通方法也可以读数据,const 只是为了避免被乱改数据。如果修改会报错。


http://www.kler.cn/a/427901.html

相关文章:

  • 具有HiLo注意力的快速视觉Transformer
  • vue3中el-input无法获得焦点的问题
  • LMI Gocator GO_SDK VS2019引用配置
  • 图论——floyd算法
  • 单机伪分布Hadoop详细配置
  • [权限提升] 常见提权的环境介绍
  • 【oracle数据库提示oracle initialization or shutdown in process】
  • Spring完整知识点二
  • 17. Threejs案例-Three.js创建多个立方体
  • burpsuite(6)暴力破解与验证码识别绕过
  • ansible基础教程(上)
  • UE5 Compile Plugins | Rebuild from Source Manually | Unreal Engine | Tutorial
  • 如何在Ubuntu 20.04上编译安装OpenCV 4.4并启用pkg-config支持
  • 【工具变量】上市公司企业商业信用融资数据(2003-2022年)
  • LeetCode - #152 乘积最大子数组(Top 100)
  • ADB常用各模块操作命令
  • 第二部分:基础知识 5.控制流 --[JavaScript 新手村:开启编程之旅的第一步]
  • 【趋势红蓝交易】主图指标操盘技术图文展示,注意要点,通达信炒股软件指标
  • Android 按两下power键不打开相机改为打开手电筒
  • 第三周作业
  • 如何在MySQL中开启死锁日志及查看日志
  • 超详细!!关于Docker的访问仓库操作
  • TCP Analysis Flags 之 TCP Spurious Retransmission
  • Apache Dolphinscheduler可视化 DAG 工作流任务调度系统
  • 【Elasticsearch】ES+MySQL实现迷糊搜索
  • 【062B】基于51单片机无线病房呼叫系统(+时间)【Keil程序+报告+原理图】