类的版式
类可以将数据和函数封装在一起,其中函数表示了类的行为(或称服务)。类提供
关键字public、protected 和private,分别用于声明哪些数据和函数是公有的、受保护
的或者是私有的。这样可以达到信息隐藏的目的,即让类仅仅公开必须要让外界知道的
内容,而隐藏其它一切内容。我们不可以滥用类的封装功能,不要把它当成火锅,什么
东西都往里扔。
类的版式主要有两种方式:
(1)将private 类型的数据写在前面,而将public 类型的函数写在后面,如示例8-3(a)。
采用这种版式的程序员主张类的设计“以数据为中心”,重点关注类的内部结构。
(2)将public 类型的函数写在前面,而将private 类型的数据写在后面,如示例8.3(b)
采用这种版式的程序员主张类的设计“以行为为中心”,重点关注的是类应该提供什么
样的接口(或服务)。
很多 C++教课书受到Biarne Stroustrup 第一本著作的影响,不知不觉地采用了“以
数据为中心”的书写方式,并不见得有多少道理。
我建议读者采用“以行为为中心”的书写方式,即首先考虑类应该提供什么样的函
数。这是很多人的经验——“这样做不仅让自己在设计类时思路清晰,而且方便别人阅
读。因为用户最关心的是接口,谁愿意先看到一堆私有数据成员!”
分享到:
相关推荐
本文将深入探讨C++中JPEG图像的编码与解码过程,以及相关的技术要点。 首先,理解JPEG编码的核心是离散余弦变换(Discrete Cosine Transform, DCT)。DCT将图像数据从空间域转换到频率域,使得高频信息更容易被压缩...
除了上述提到的目录结构、文件规范和程序格式之外,C++编码规范还涵盖了类、变量、常量、数据类型、宏及预处理、表达式、控制语句、内存管理、调试与维护等方面的内容。例如,对于类的设计,应遵循单一职责原则,...
在VC6环境下编写霍夫曼编码程序时,需要注意C++标准库的兼容性问题,因为VC6支持的是C++98标准,不包含C++11及以上版本的一些特性。例如,可能需要使用std::list代替std::vector来构建优先队列,因为std::priority_...
本书《C和C++安全编码》专注于讨论在编程过程中如何安全地编写C和C++代码。C和C++作为强大的编程语言,在软件开发领域中应用广泛,但同时它们也容易出现安全漏洞。因此,安全编码对于C和C++程序员来说至关重要。 C...
《X264编码C++类详解》 X264是一种高效的H.264视频编码库,常用于视频编码、压缩与传输。在C++编程中,封装X264库为类,可以方便地进行视频处理操作。本文将深入探讨X264编码C++类的设计和实现。 首先,我们来看类...
在VC/C++环境中,常见的编码格式有ANSI、UTF-8和Unicode。这些编码各有其特点,适用于不同的场景。本篇文章将深入探讨如何在VC/C++中利用API函数`WideCharToMultiByte`和`MultiByteToWideChar`进行不同编码格式之间...
C++ 编码规范 C++ 编码规范是指在编写 C++ 代码时所遵守的一系列规则和约定,旨在提高代码的可读性、可维护性和可重用性。本文档将详细介绍 C++ 编码规范的各个方面,包括版面、命名、注释、源代码结构等。 版面 ...
在C++11标准中,Unicode编码转换是一个重要的更新,主要涉及了新的数据类型和字符串定义方式,以解决跨平台的Unicode字符处理问题。这里详细解释一下这些知识点: 1. **char16_t 和 char32_t 类型**: 在C++98之前...
SEI CERT C++编码标准&规范指南是一份针对C++语言编写的详细编码规范文档,它为开发者提供了编写安全、可靠、易于维护的C++代码的具体指导原则。该指南在编程社区中具有较高的权威性和实用性,得到了广泛认可和应用...
### C/C++语言编码规范详解 #### 目的与目标 C/C++作为一种广泛使用的编程语言,在软件开发过程中,为了确保代码的质量与一致性,制定一套规范化的编码标准至关重要。本篇文档旨在阐述C/C++语言编码规范的重要性和...
"C++编码统一格式"是一个关于如何编写清晰、规范的C++代码的指南,旨在帮助开发者遵循一致的编码标准,提高代码质量,减少潜在错误,并增强团队间的沟通效率。 首先,编码风格是编程实践中的一种约定,它包括命名...
在实现过程中,注意要遵循C++的良好编程习惯,比如使用智能指针管理内存,避免内存泄漏,以及使用异常处理来增加程序的健壮性。 总之,C++实现霍夫曼编码算法需要对数据结构和算法有深入的理解,包括二叉树的构建、...
香农编码是一种在数据压缩领域广泛应用的熵...在C++实现时,需要注意字符频率统计、编码分配、二进制处理等多个环节,确保程序的正确性和高效性。对于描述中提到的问题,需要仔细检查代码,找出并修复这些“小瑕疵”。
### 游程编码C++实现 #### 核心概念 在上述代码中,游程编码的核心思想得到了体现。首先,程序接收一个由0和1组成的序列作为输入,然后通过遍历这个序列,计算出每个数字连续出现的次数,最后将这些次数作为游程...
在提供的资源中,`Base64.cpp`和`Base64.h`文件是C++实现Base64编码类的源代码,它们可能包含了以下关键功能: 1. **编码函数**:此功能将输入的字节数组转换为Base64字符串。首先,根据输入数据的长度进行取模运算...
以下是从提供的文件中提取的C++编码规范的主要知识点: 1. **命名规则**: - **类名**:类名应清晰地反映出类的用途,通常是名词,并且遵循驼峰命名法,即每个单词的首字母大写,如`ClassName`。 - **方法和函数...
3. **C++编程注意事项**: - 使用`#include<iostream.h>`是旧式的C++头文件引用方式,现代C++代码推荐使用`#include<iostream>`。 - 在定义结构体时,可以考虑使用`struct`关键字而不是`typedef`,如`struct ...
由于提供的文件内容不完整且包含大量OCR扫描错误,这里我将基于可识别的清晰部分和常见的C++编码规范主题,尽力构建一个详细的知识点说明。 首先,文件标题为"C++编码规范.pdf",表明文档主要关注C++编程语言的编码...
在C++中实现哈夫曼编码涉及到几个关键步骤和概念,以下将详细介绍这些知识点。 首先,我们需要理解哈夫曼树(Huffman Tree)的基本原理。哈夫曼树是一种特殊的二叉树,也称为最优二叉树或最小带权路径长度树。它的...
总的来说,使用编码转换表在C/C++中进行GBK和Unicode的转换是一种有效的方法,特别是当处理的文本数据量不大时。然而,对于大规模的文本处理,更推荐使用现成的库,如iconv,它们提供了更高效和全面的编码转换支持。