【C++基础】10、类与对象

ops/2024/12/28 5:47:25/

        C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。

        类用于指定对象的形式,是一种用户自定义的数据类型,它是一种封装了数据和函数的组合。类中的数据称为成员变量,函数称为成员函数。类可以被看作是一种模板,可以用来创建具有相同属性和行为的多个对象。

一、C++ 类的定义

        定义一个类需要使用关键字 class,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。

        定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。

以下实例我们使用关键字 class 定义 Box 数据类型,包含了三个成员变量 length、breadth 和 height:

class Box
{public:double length;   // 盒子的长度double breadth;  // 盒子的宽度double height;   // 盒子的高度
};

        关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。您也可以指定类的成员为 private 或 protected,区别如下:

  1. public(公共)

    • public 成员是类中默认的访问级别。
    • public 成员可以在类的内部和外部被访问。
    • 通常用于定义类的接口,即那些需要被外部代码调用的成员函数和数据成员。
  2. private(私有)

    • private 成员只能在类的内部被访问。
    • private 成员不能在类的外部直接访问,包括类的实例。
    • private 成员通常用于实现类的内部逻辑,隐藏实现细节,保护数据。
  3. protected(保护)

    • protected 成员可以在类的内部以及继承自该类的派生类中被访问。
    • protected 成员不能在类的外部直接访问。
    • protected 成员用于那些需要在派生类中访问,但又不希望在类的外部被访问的成员。

二、 C++ 对象的定义

        类提供了对象的蓝图,所以基本上,对象是根据类来创建的。声明类的对象,就像声明基本类型的变量一样。下面的语句声明了类 Box 的两个对象:

Box Box1;          // 声明 Box1,类型为 Box
Box Box2;          // 声明 Box2,类型为 Box

对象 Box1 和 Box2 都有它们各自的数据成员。

三、访问数据成员

类的对象的公共数据成员可以使用直接成员访问运算符 . 来访问。

为了更好地理解这些概念,让我们尝试一下下面的实例:

#include <iostream>using namespace std;class Box
{public:double length;   // 长度double breadth;  // 宽度double height;   // 高度// 成员函数声明double get(void);void set( double len, double bre, double hei );
};
// 成员函数定义
double Box::get(void)
{return length * breadth * height;
}void Box::set( double len, double bre, double hei)
{length = len;breadth = bre;height = hei;
}
int main( )
{Box Box1;        // 声明 Box1,类型为 BoxBox Box2;        // 声明 Box2,类型为 BoxBox Box3;        // 声明 Box3,类型为 Boxdouble volume = 0.0;     // 用于存储体积// box 1 详述Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0;// box 2 详述Box2.height = 10.0;Box2.length = 12.0;Box2.breadth = 13.0;// box 1 的体积volume = Box1.height * Box1.length * Box1.breadth;cout << "Box1 的体积:" << volume <<endl;// box 2 的体积volume = Box2.height * Box2.length * Box2.breadth;cout << "Box2 的体积:" << volume <<endl;// box 3 详述Box3.set(16.0, 8.0, 12.0); volume = Box3.get(); cout << "Box3 的体积:" << volume <<endl;return 0;
}

运行结果为:


http://www.ppmy.cn/ops/145582.html

相关文章

Joget研究——Joget8商业版部署

大纲 1. 环境准备1.1 安装必要软件1.2 配置Java1.3 配置MySQL数据库1.3.1 创建用户1.3.2 创建数据库 2. 下载和部署3. 启动4. 测试5. 商业版社区版对比 1. 环境准备 1.1 安装必要软件 We recommend the use of the LTS version of 11. Java 17 (LTS) is not supported at the …

【高阶数据结构】红黑树

红黑树 1.红黑树的概念2.红黑树的规则3.红黑树的实现1.红黑树的结构2.红黑树的插入1.情况一&#xff1a;变色2.情况二&#xff1a;单旋 变色3.情况三&#xff1a;双旋 变色 3.红黑树的查找4.红黑树的验证5.红黑树的删除6.红黑树与AVL树的性能比较 4.总代码1.RBTree.h2.Test.c…

踏踏实实练SQLday2-3连续12345

3连续12345 连续12345 -- hive的连续开窗函数知识点&#xff1a;排序开窗函数--4种 (如果第2 和 3 名一样大)3种 序号排序 - rank() 12245 - 紧缩dense_rank() 12234 - row_number() 123451种百分比排序 - percent_rank() - 算百分比&#xff0c;超过了多少人top20排行榜 连续1…

维克日记:私密写作新选择,轻松记录生活点滴

作为一款专注于私密写作的数字日记本&#xff0c;维克日记以其独特的设计理念和全面的功能特性&#xff0c;正在重新定义现代人记录生活的方式。这款软件不仅提供了清新简约的界面设计&#xff0c;更重要的是它完全不需要繁琐的设置就能立即开始写作。对于热爱写作的用户来说&a…

几个支持用户名密码的代理链工具: glider, gost, proxychains+microsocks

几个支持用户名密码的代理链工具: glider, gost, proxychainsmicrosocks gost -L:7777 -Fsocks5://192.168.2.20:7575 -Fsocks5://user:passwd1.1.1.1:10086 -Dgost&#xff1a;(https://github.com/ginuerzh/gost) 参考 https://www.quakemachinex.com/blog/279.html

Apache Commons Pool2—Java对象池的利器

在日常开发中&#xff0c;为了提高系统性能&#xff0c;避免重复创建和销毁资源&#xff0c;我们经常需要使用对象池技术。Apache Commons Pool2 是 Java 生态中一个强大且易用的对象池实现&#xff0c;它为我们提供了灵活的对象管理功能。本文将带你深入了解 Commons Pool2 的…

linux prctl函数使用说明

prctl 是 Linux 系统调用&#xff0c;用于对进程的某些特性进行控制和操作。它的主要作用是设置或获取进程的某些特定属性&#xff0c;例如进程名、允许的系统调用行为等。 下面是 prctl 函数的常见用法及其参数说明&#xff1a; #include <sys/prctl.h> #include <…

算法练习——位运算

前言&#xff1a;位运算的方法大多比较抽象&#xff0c;很难想到。 一&#xff1a;判断字符是否唯一 题目要求&#xff1a; 解题思路&#xff1a; 法一&#xff1a;使用hash的思想&#xff0c;统计每一个字母出现的次数&#xff0c;再通过一次循环遍历查询是否有超过1的字母&…