C++::初识类(小白的进阶基石)

来源:互联网 发布:程序员真的会短命吗 编辑:程序博客网 时间:2024/05/21 10:26

一、类

1、【类的定义】
class
ClassName/*类名字*/
{
// 类实现体
};
class
为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义
结束时后面分号类中的元素称为类的成员;类中的数据称为类的属性或者类的成员数据类中的函数称为类的方法或者成员函数

2、【类的两种定义形式】
a、直接在类声明时定义
b、声明和定义不在同一个文件中,一般将类的声明放在头文件中,
将类的定义放在.cpp文件中,.h头文件和.cpp源文件的名字最
好相同。我们更倾向于方式2

c++的三大特性:封装、继承、多态。
1、封装:

函数是封装的一种形式:函数所执行的细节行为被封装在函数本身这个更大的实体中,被封装的元素隐藏了他们的实现细节---可以调用一个函数但是不能够访问函数所执行的语句。
封装:隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互,将数据和操作数据的方法进行有机结合

【说明】
1public成员在类外可以直接访问
2
protectedprivate成员在类外(在此可将protectedprivate理解成private)
不能够访问。
3
、它们的作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止。
4
class的默认访问权限是private,而structpublic(因为struct要兼容C)
类外:即脱离了类的作用域或者说访问时不在类的成员函数中。

【注意】

访问限定符表面层次上是给类编写者使用,用于提供对象与对象之间的交互,实际上是给编译器来使用的,因为数据在内存中存放时(不论是栈、堆或全局作用域)是没
有任何限制的,不可能说给某一段内存加上private或者protected限制。当编译器
在对类进行编译时,对于不同访问限定符的成员,编译器就能确定哪些是可以在类
外访问的,哪些是不能够再类外访问的。对于不能在类外访问的成员,使用者强行
在类外访问时,编译器就会报错。

3、类的作用域

1)Struct类:如果在类内声明,类外定义,则要用作用域标识符;如果在类内定义,则直接使用。

2c++里:注意:作用域限定符(::)只能用来访问全局变量,不能用于访问一个在语句块外声明的同名局部变量

【注意:】、类定义了一个新的作用域,类的所有成员都必须处在类的作用域中。形参表和函数体处于类的作用域中。在类体外定义成员,需要使用 ::作用域解析符指明成员属于哪个类域。在类的作用域外,只能够通过对象或指针借助成员访问操作符.->
访问类成员,跟在访问操作符后面的名字必须在相关联类的作用域中。

二、什么是类?

类是现实世界的实体在计算机中的反映,它将数据以及在这些数据上的操作封装在一起

 

【说明】
1、类定义了一种新类型,是抽象出来描述实体的。
2、类将一组具有相关性数据包装在一体,这些数据称为类的成员变量或属性;类对自己的数据有特定的操作,这些操作称为类的成员函数或方法。

3、类定义了一种新作用域,它可以选择性的将自己的成员提供给使用者(访问限定符)。
4、类中的任何成员都不能使用auto、extern、register修饰
5、一个类可以有多个成员,类的成员函数可以重载

类实例化
用类类型创建对象的过程称为实例化

CDated; //类实例化
1.类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它
2.一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间存储类成员变量
3.做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。

类对象存储模型
所以每个对象的大小为类中所有成员变量的大小之和,当然这里也遵循内存对齐原则


0 0
原创粉丝点击