C++语言程序设计(第四版)》——类与对象的学习笔记

版权声明:共同提高:) https://blog.csdn.net/u011436427/article/details/82709998

一、面向对象程序设计的基本特点
1.抽象:

这里写图片描述

2.封装

就是将数据与操作数据的函数代码进行有机的结合,形成,其中的数据和函数都是类的成员。

这里写图片描述

这里写图片描述

3.继承
继承,能够在一般概念的基础上,派生出特殊概念,使得一般概念中的熟悉和行为可以被特殊概念共享,拜托重复分析、重复开发的困境。

4.多态

重载函数就是一种实现多态的一种手段。
这里写图片描述

强制多态是通过将一种类型的数据转换成另一种类型的数据来实现,eg:数据类型转换(隐式or显示)

重载:同一个名字赋予不同的含义

C++采用虚函数实现包含多态,模板是C++实现参数化多态性的工具:分为函数模板和类模板。

二、类的定义

类的实例化:当定义了一个类以后,便可以定义该类的变量,这个变量就称为类的对象(或实例),这个定义的过程称之为实例化

class
{
	public:
		外部接口;
	protected:
		保护型成员;
	private:
		私有成员;
};

在类中可以之声明函数的原型,函数体(函数实现)可以在类外定义

类的成员包括:数据成员和函数成员,分别描述问题的属性和行为。

公有类型public:
共有类型成员定义了类的外部接口:在类外只能访问类的公有成员。

私有类型private:
私有成员只能被内部的成员函数访问,来自外部的任何访问都是非法的

保护类型protecred:
和私有成员的性质相似,其差别在于继承过程中对产生的新类影响不同

这里写图片描述

这里写图片描述

类与对象之间的关系:

如果将类看作是自定义的类型,那么类的对象就可以看成是该类型的变量。

这里写图片描述

三、类的成员函数

在类的外部只能访问到类的公有成员;在类的成员函数中,可以访问到类的全部成员

1.成员函数的实现

成员函数是程序算法的实现部分,是对封装的数据进行操作的方法。
类的成员函数描述的是类的行为。

这里写图片描述

2.成员函数调用中的目的对象

在类的成员函数红,既可以访问目的对象的私有成员,又可以访问当前类的其它对象的私有成员。

四、内联成员函数

内联成员函数的函数体会在编译的时候插入到每一个调用它的地方。
内联函数的申明有两种方式:隐式申明和显式申明。

将函数体直接放在类体内,这种方法称之为隐式申明
eg。将时钟类的showTime()函数申明为内敛函数,可以写作为:
这里写图片描述

显式申明:在类定义中不加入showTime的函数体,即在函数返回值类型前面加上inline
这里写图片描述

重点关注:下面这个时钟类的完整程序

//4_1.cpp
#include<iostream>	
using namespace std;
class Clock	//时钟类的声明
{
public:	//外部接口,公有成员函数
	void SetTime(int NewH=0, int NewM=0, int NewS=0);
	void ShowTime();
private:	//私有数据成员
	int Hour,Minute,Second;
};
//时钟类成员函数的具体实现
void Clock::SetTime(int NewH, int NewM, int NewS)
{
	Hour=NewH;
	Minute=NewM;
	Second=NewS;
}

inline void Clock::ShowTime()
{
	cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
//主函数
void main()
{
	Clock myClock;	//定义对象myClock
	cout<<"First time set and output:"<<endl;
	myClock.SetTime();	//设置时间为默认值
	myClock.ShowTime();	//显示时间
	cout<<"Second time set and output:"<<endl;
	myClock.SetTime(8,30,30);	//设置时间为8:30:30
	myClock.ShowTime();	//显示时间
}

程序的运行结果为:
这里写图片描述

说明:程序分为3部分
1)类clock的定义:对问题进行封装
2)clock类成员函数的具体实现
3)主函数main:申明对象并传递消息,eg:本程序先申明一个Clock类的对象myClock,然后利用这个对象调用其它成员函数。

五、构造函数和析构函数

对象的初始化:在定义对象的时候,也可以同时对它的数据成员赋值。类似于定义基本类型变量的时候可以同时进行初始化一样。

1.构造函数

构造函数的作用是:在对象被创建的时候利用特定的值构造对象,给对象初始化为一个特定的状态。

构造函数的特点:
(1)构造函数也是类的一个成员函数
(2)构造函数的函数名与类名相同,而且没有返回值
(3)构造函数通常被申明为共有函数

构造函数在对象被创建的时候将被自动调用,其中,调用的时候无需提供参数的构造函数称之为默认构造函数。

作为类的成员函数,构造函数可以直接访问类的所有数据成员,可以是内联函数,可以是带有参数表,可以带默认的形参值,也可以重载。

eg:看下面重载的构造函数的被调情况

构造函数有两种重载形式:有参数的和无参数的(默认构造函数)
这里写图片描述

2.复制构造函数

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/82709998