C++程序设计第九章对象和类小结

C++程序设计第九章对象和类小结

面向对象程序设计(OOP)可以高效地开发大规模软件

1. 声明类

类定义了一个对象的属性和方法
		 - 属性:状态,用数据域来表示
		 - 行为:一组函数定义
		
一个对象表示了现实世界中的一个实体;一个对象就是一个类的一个实例
构造函数:特殊种类的函数,可以用来初始化动作和对象的数据域
//类模板标注化UML类图:
//数据域
dataFieldName: dataFieldType
//构造函数
className(parameterName: parameterType)
//函数表示
functionName(parameterName: parameterType):returnType

2. 定义类和创建对象

类给对象做了定义,可以通过类来创建对象
class className
{
	public://没有public,会缺省为private
		//数据域,
		dataFieldName: dataFieldType
		//构造函数
		className(parameterName: parameterType)
		//函数表示
		functionName(parameterName: parameterType):returnType
};//注意分号
className objectName;//无参创建对象
ClassName objectName(arguments);//有参数创建对象

3. 构造函数

通过调用构造函数来创建对象
	与其他函数相比,3个不同点
	 - 构造函数的名字必须与类名一致
	 - 构造函数没有返回值类型——void也不行
	 - 创建对象时,构造函数被调用时,他的作用就是初始化对象

一般的类里都会有一个无参数的构造函数:无参构造函数;一个类声明里不包括构造函数,他会默认存在一个无参空构造函数成为:缺省构造函数
在构造函数中,可以使用初始化列表初始化数据域
ClassName(parameterList)
	:datafield(value1),datafield(value2)
{
}

4. 创建和使用对象

对象的数据域和函数可用对象名可通过运算符(.)来实现
		objectName.datafield			//调用对象上的数据域
		objectName.function(arguments)	//调用对象上的一个函数
关于类和对象的,需要注意的
  • 从某种意义上,一个类就是一个数据类型
  • 可以用=来进行对象之间的复制(仅在相同类之间,复制数据)
  • 对象名有点像数组名,一旦声明,不可改变
  • 一个对象其实并不是很大

5. 类定义和类实现的分离

这种分离有利于类的维护
两者可以置于两个分离的文件中,类定义文件的扩展名为.h,类实现文件的扩展名为.cpp,名字相同
例如:
//类定义Circle.h
class
{
	public:
		double radius;

		Circle();
		Circle(double);

		double getArea();
};

//类实现Circle.cpp
#include "Circle.h"

Circle::Circle()
{
	radius = 1;
}
Circle::Circle(double newRadius)
{
	radius = newRadius
}
double Circle::getArea()
{
	return radius * radius * 3.14159;
}
符号::称为二元作用域解析运算符

6. 避免多次包含

“包含保护”可以避免头文件被多次包含
为了避免多次包含的错误,通常采用下面的模板
#ifndef ClassName_H
#define ClassName_H
//类定义文件
#endif

7. 类中的内联函数

可以把短函数定义为内联函数来提升性能

> https://blog.csdn.net/qq_34793133/article/details/82429379

8. 数据域封装

  • 数据域私有可以保护数据,并且使类易于维护
  • 将数据域声明为私有的,用private关键字
  • 但是为了更改和获取所以添加了两个共有的函数 set和get
  • 这种方法使得修改和获取变成了唯一方法,更利于维护

9. 变量的作用域

实例变量(实例化的数据域)和静态变量在类的什么地方声明,他们的作用域都是整个类
一个数据域只能声明一个成员变量,但是一个变量名在不同的函数里可以创建多个局部变量

10. 类抽象和封装

类抽象就是将类的实现和使用分离开来,类实现的细节被封装起来,对用户是隐藏的,这就是类封装
个人感觉类似于类定义和实现的分离,分离==抽象,隐藏==封装
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值