我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++类的定义与实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++类的定义与实现

文章转自 微信公众号:Coder梁(ID:Coder_LT)

一、类的定义

根据C++ Primer中的描述,类的定义是一种将抽象转换为用户定义类型的C++工具。也就是说类的实质是一种用户自定义类型,它可以将数目表示和操作数据的方法组合成一个整洁的包。

在实际开发当中,想要实现一个类,并编写一个使用它的程序是相对比较复杂的,涉及多个步骤。

通常,我们会将类的定义放在头文件当中,并将实现的代码放在源代码文件中。我们来看C++ Primer当中的一个例子:一个关于股票买卖的类。

首先是类的定义,写在stock00.h文件中:

#ifndef STOCK00_H_
#define STOCK00_H_

#include <string>

class Stock {
    private:
     std::string company;
     long shares;
     double share_val;
     double total_val;
     void set_tot() {total_val = shares * share_val;}
    public:
     void accquire(const std::string &co, long n, double pr);
     void buy(long num, double price);
     void sell(long num, double price);
     void update(double price);
     void show();
};
#endif

首先是关键字class,它表示我们声明的是一个类,一般类名我们使用大驼峰命名法定义。

其次在这个类的定义当中,我们看到了两个新出现的关键字privatepublic。这两个关键字描述了对类成员的访问控制,使用类对象的程序,都可以直接访问公有部分(public),但无法访问对象的私有成员。

想要获取私有成员,只能通过公有的成员函数。比如在上面这个例子当中,我们想要修改share_val只能通过公有的方法sellbuy,而无法直接对变量的值进行修改。防止程序直接访问数据修改数据被称为数据隐藏。

除了publicprivate,C++当中还提供了第三个关键字叫做protected,这个关键字和类的继承有关,我们将会在之后的文章当中进行讨论。

数据隐藏的思想其实是认为类中的成员变量的所有权应该属于类本身,当我们需要对类中的数据进行读取和修改的时候,应当通过类提供的公开方法,而不是直接操作类中值。这被认为是一种面向对象的思想,即只能通过类提供的方法访问数据,而不应该直接访问数据。

C++正是基于这种面向对象的思想设计的,所以类中的成员默认是private的,我们可以省去private关键字:

class World {
    float mass;
    char name[30];

public:
    void tellall();
    ...
};

我们从类的描述看上去很像是包含了成员函数以及数据隐藏的结构体,但实际上这是因为C++对结构体进行了拓展,让它具有了和类相同的特性。在C语言当中,结构体是没有这么多特性的。

比如我们可以给结构体设计构造函数,也可以给结构体添加成员函数,甚至结构体也可以继承、派生和多态。

它们之间唯一的区别是,结构体的默认类型是public,而类是private。所以通常使用类来实现对象,而结构体只用来结构化地存储数据。

另外多说一句,数据隐藏的面向对象理念并不适用于所有语言。比如Python,Python当中的类中的成员变量默认是public,且没有private关键字。

二、类的实现

当我们完成了类定义之后, 还需要来实现类当中的函数。

比如我们在stock00.h当中定义了一个类:

#ifndef STOCK00_H_
#define STOCK00_H_

#include <string>

class Stock {
    private:
     std::string company;
     long shares;
     double share_val;
     double total_val;
     void set_tot() {total_val = shares * share_val;}
    public:
     void accquire(const std::string &co, long n, double pr);
     void buy(long num, double price);
     void sell(long num, double price);
     void update(double price);
     void show();
};
#endif

1.成员函数

在这个定义当中,我们只是声明了函数,并没有具体实现函数的逻辑。

我们通常会在同名的cpp文件当中实现,实现的时候,需要使用作用域解析运算符来表示函数所属的类:

void Stock::update(double price) {
    ...
}

这样就表明了update函数所属Stock这个类,这也就意味着我们可以创建属于其他类的同名函数:

void Buffoon::update() {
    ...
}

其次,我们在成员函数当中,可以访问private限定的成员变量。比如说在show函数当中,我们可以这样实现:

void Stock::show() {
    std::cout << company << shares << share_val << total_val << endl;
}

虽然company,shares都是类的私有成员,但在成员方法当中,一样可以正常访问。

再次,我们在成员方法当中调用另外一个成员方法,可以不需要解析运算符。比如我们要在show函数内调用update函数,直接使用update()即可,而无需前面的Stock::。

2.内联函数

我们再回过头来看一下Stock这个类的定义,在类的定义当中,有一个叫做set_tot的函数。我们直接在类当中实现了逻辑。虽然同样是成员函数,但是在类当中直接实现的函数是有所区别的。在类声明当中实现的函数,会被视为是内联函数。

一般我们会把一些比较简短的函数在类的声明当中直接实现,当然我们也可以使用关键字inline,手动指定某个函数是内联的。

class Stock {
    private:
    void set_tot();
    public:
    ...
};

inline void Stock::set_tot() {
    total_val = shares * share_val;
}

到此这篇关于C++类的定义与实现的文章就介绍到这了,更多相关C++类的定义与实现内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++类的定义与实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++类的定义与实现方法是什么

这篇文章主要讲解了“C++类的定义与实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++类的定义与实现方法是什么”吧!一、类的定义根据C++ Primer中的描述,类的定义是一
2023-06-22

php怎么实现类的定义与实例化

本篇内容主要讲解“php怎么实现类的定义与实例化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么实现类的定义与实例化”吧!在php中,可以使用class关键字加类名的方式来定义一个类,语
2023-06-25

c++类怎么定义与使用

在C++中,可以使用class关键字来定义一个类。类定义包括类的成员变量和成员函数。以下是一个简单的C++类的定义和使用的示例:```cpp// 定义一个类class MyClass {public:// 成员变量int myInt;//
2023-09-26

C#中如何实现自定义类型的转换

在C#中,我们可以通过实现类型转换运算符(conversion operators)来自定义类型的转换。具体步骤如下:创建一个自定义类型,例如一个类或结构体。public class MyType{public int Value { g
C#中如何实现自定义类型的转换
2024-04-03

C#类怎么定义

本篇内容介绍了“C#类怎么定义”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# 类(Class)当你定义一个类时,你定义了一个数据类型的蓝
2023-06-17

C#中的预定义类型与引用类型是什么

今天小编给大家分享一下C#中的预定义类型与引用类型是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、预定义的值类型一个
2023-06-30

深入了解C++封闭类的定义与使用

一个类的成员变量如果是另一个类的对象,就称之为“成员对象”。包含成员对象的类叫封闭类(enclosed class)。本文主要和大家聊聊C++封闭类的使用,需要的可以参考一下
2022-11-13

php+mysql实现的无限分类方法类定义与使用示例

本文实例讲述了php+mysql实现的无限分类方法类定义与使用。分享给大家供大家参考,具体如下: 创建数据库以及表CREATE DATABASE `sortclass`DEFAULT CHARSET utf8;CREATE TABLE IF
2022-05-23

C++中如何定义类

这篇文章给大家介绍C++中如何定义类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是C++类C++类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。这有点像C语言中的结构,***
2023-06-17

如何定义C++中的C++数据类型

这篇文章给大家介绍如何定义C++中的C++数据类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。着重介绍C++数据类型,C++中的C++数据类型定义编译器在内存中存放信息的方式,在不同的开发环境中,可以向变量赋予任何数
2023-06-17

C++中怎么自定义类

这篇文章将为大家详细讲解有关C++中怎么自定义类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。/////////////TestClass.h/////////////////// cla
2023-06-17

c++定义类的方法是什么

在C++中定义一个类,可以使用如下的语法:class MyClass {public:// 成员变量int myVar;// 成员函数void myFunction() {// 函数实现}};在这个例子中,MyClass 是类的名称,
c++定义类的方法是什么
2024-04-09

C++的枚举类型怎么定义

这篇文章主要介绍了C++的枚举类型怎么定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++的枚举类型怎么定义文章都会有所收获,下面我们一起来看看吧。C++枚举类型enum表示枚举,通常用于定义个新类型的字符
2023-06-27

C++引用的定义与使用实例分析

这篇文章主要介绍了C++引用的定义与使用实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++引用的定义与使用实例分析文章都会有所收获,下面我们一起来看看吧。解释引用首先我们先来看一个引用的例子int m
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录