🥥类&对象
2022-5-15
| 2023-8-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

 
类的基本思想是数据抽象(data abstraction)封装(encapsulation)
  • 数据抽象是一种依赖于接口(interface)实现(implementation) 分离的编程及设计技术。类的接口包括用户所能执行的操作;类的实现包括类的数据成员、负责接口实现的函数体以及其他私有函数。
  • 封装实现了类的接口和实现的分离。封装后的类隐藏了它的实现细节,也就是说,类的用户只能使用接口而无法访问实现部分。
类要想实现数据抽象和封装,需要首先定义一个抽象数据类型。在抽象数据类型中,由类的设计者负责考虑类的实现过程;使用该类的程序员则只需要抽象地思考类型做了什么,而无须了解类型的工作细节。
 

C++类定义

采用struct ,结构体中定义的成员变量或成员函数默认都是 public 属性的;使用 class 关键字,类中定义的成员变量或成员函数默认都是private 属性的:
 

定义C++对象

 

访问数据成员

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

类类型

每个类定义了唯一的类型。即使两个类的成员列表完全一致,它们也是不同的类型:
 
可以把类名作为类型的名字使用,从而直接指向类类型。或者,也可以把类名跟在关键字 classstruct 后面:
 

类的声明

就像可以把函数的声明和定义分离开来一样,也可以仅仅声明类而暂时不定义它:
这种声明被称作前向声明(forward declaration),用于引入类的名字,在类声明之后定义之前都是一个不完全类型
 
只要包含{}就算定义:
 
不完全类型只能在非常有限的情景下使用:
  • 可以定义指向不完全类型的指针或引用
  • 也可以声明(不能定义)以不完全类型作为参数或返回类型的函数
 
对于只有声明而没有定义的类,只能声明它的指针类型或引用类型,不能直接声明其对象类型:
因为如果类没有定义,编译器就不知道为这个对象分配多大空间,但是类的指针或引用类型的大小与类大小无关。
 
当编译器遇到 } 表示一个类的定义结束。所以在一个类中,可以定义其自身的指针或引用类型,但是却不能定义其对象类型。因为类的定义还没有结束,无法确定其对象所占空间的大小。所以一个类的成员类型不能是该类本身。但是一旦类的名字出现,就可以被认为是声明过了,因此类可以包含指向它自身类型的引用或指针:
 
  • C++
  • 辅助Debugging成员函数
    目录