C++基础知识(六)--类--成员函数的定义--对象的创建与使用--从面向过程到面向对象
一、类
1.类是一种数据类型,将数据与对数据的操作(函数)放到一起。一个类中的数据通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的接口,对象之间通过消息进行通讯。
2.如果在类的起始点无访问说明符,系统默认为私有(private)
3.类是一种数据类型,定义时系统不为类分配存储空间,所以不能对类的数据成员进行初始化。类中的任何数据成员也不能使用关键字extern,auto,register等关键字限定其存储类型
二、成员函数的定义
1.函数定义:通常在类定义中,成员函数仅做声明,函数定义通常在类外。格式如下:
返回值类型 类名::函数名(参数列表)
{......}//函数体
::为域解析运算符,它指出该函数是属于哪一个类的成员函数。
2.内联成员函数的定义与使用:见第三板块对象的创建于使用。
三、对象的创建于使用
1.对象是类的实例。定义一种数据类型只是告诉编译系统该数据类型的构造,并没有预定内存。类只是一个样板,以此样板可以在内存中开辟出同样结构的的实例-对象。
2.当用类创建多个对象时,内存分配有两种情况:1、在累说明中定义成员函数2、在类说明外部定义成员函数
- 在类内部定义成员函数内存分配如下:各个对象完全独立地安排内存方案
- 各对象完全独立地安排内存方案
- 数据区存放成员数据,代码区存放成员函数
- 在类说明外部定义成员函数内存分布如下:代码区为各个对象共用
- 各个对象共用代码区的内存分配分配方案
- 仅为每个对象分配各自的数据区,代码区为各个函数共用
3.内联成员函数:使用inline关键字,系统自动采用内联扩展方法实现,每个对象都有该函数的一份独立的代码。
-
1 对一个商品类:CGoods 2 其成员函数RegisterGoods()内联函数可定义为: 3 inline void CGoods::RegisterGoods(char name[],int amount,float price) 4 { 5 strcpy(Name,name); 6 Amount=amount; 7 Price=price; 8 }
结果:每个对象都有RegisterGoods()函数的一份独立的代码
- 需要注意的是:inline只是一个建议,最后由编译器根据函数体的具体情况决定是否执行。
四、从面向过程到面向对象
1.面向过程的结构化程序设计
采用的是自顶向下,逐步细分的思想,具体的操作是模块化,即采用函数实现每一个模块的功能,数据与数据的处理分离,当软件规模较大时,采用结构化程序设计,其开发和维护就越来越难以控制。
2.面向对象的程序设计,面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射与体现,将数据和对数据的操作放在一起。面向对象的程序特点是封装性,派生与继承,多态