1、面向对象的基本概念:
对象的概念是面向对象技术的核心所在。
面向对象技术中的对象就是现实世界中,某个具体的物理实体在计算机世界(逻辑)中的映射和体现。也就说计算机中的对象,是模拟现实世界中的实体。
举个例子:int是一个类型,我们可以去设计一个类型,通过这个类型,我们可以实例化产生一个具体的实例,比如int 一个变量a,我们可以对变量a进行赋值。那我们面向对象设计程序就是要设计、实例化产生一个具体的实例来供我们进行操作
2、总结:
抽象类别:概念是由实体通过抽象、分析而得到的
类:是由主观、概念世界设计而来
对象:是由类的实例化产生而来
3、状态和行为是对象的主要属性
1.对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都有自己专有的内部变量,这些变量的值标明了对象所处的状态。
2.对象的方法(行为)一方面把对象的内部变量包裹,封装,保护起来,使得只有对象自己的方法才能操作对象内部变量,另一方面,对象的方法还是对象与外部环境和其他对象交互,通信的接口,其他对象或外部环境可以通过这个接口来调用对象的方法,操纵对象的行为和改变对象的状态。
成员变量是对象的属性(可以是变量,指针,数组等),属性的值确定对象的状态。(比如我们的对象张磊同学:他有100块钱,我们将钱借出来之后,他的财富值就是0,他的状态就会从有钱人变成穷人)
成员函数是对象的方法,确定对象的行为。(借钱的时候,他有数钱、取钱等等方法、行为)
1.2、类型设计和实例化对象:1、c++类的设计
2、访问性说的是对象。我们能从外部访问这个类所产生的对象的公有成员(public),不能从外部访问私有和保护行成员private、protected
3、一般情况,将我们的方法都设计成公有,将属性设计成私有。类就是属性和方法的集合,最终我们可以通过调用公有的方法来改变对象私有的属性。公有函数集定义了类的接口
——————————————————————————————————————————————————————————————————————————————————————
2、this指针 2.1、this指针特点引入this的根本目的:节省空间(时间换空间),因为各对象独立的安排内存的时候,他们有各自的数据区(属性)和代码区(方法),这样类产生多个对象的时候,就会占用很大的内存空间。但是我们知道,同类型的对象,它们的属性各不相同,但是方法都是一样的,所以可以采用各对象代码区共用的方案,这个时候就用到this指针
只在函数调用的过程中存在,函数调用结束,this指针就不再存在了
形参 Cgood * const this,this指针自身为常性
2.2、编译器针对程序员自己设计的类型分三次编译1、扫描属性,放入描述表
2、识别和记录类体中函数原型(返回类型+函数名+参数列表),形参的默认值,访问限定。不识别函数体
3、改写类的成员函数,每一个都要改写,加入this指针。
2.3、构造函数构造函数定义
数据成员多为私有的,要对它们进行初始化,必须用一个公有函数来进行。同时这个函数应该在,且仅在定义对象时自动执行一次。称为构造函数(constructor)
构造函数用途:
1)创建对象;2)初始化对象中的属性;3)类型转换。
C/C++最大的区别:
对于C语言,有内存空间即可操作(可读可写)
C++中,有空间不一定可以操作,需要构造函数创建对象。C++的函数中,有空间,不一定有对象;有对象,一定有空间。
空类型对象,也要占一个字节存在地址
构造函数的重载
构造函数的定义与使用
构造函数是特殊的公有成员函数(在特殊用途中构造函数的访问限定可以定义成私有或保护),其特征如下:
1.函数名与类名相同。
⒉.构造函数无函数返回类型说明。注意是没有而不是void,即什么也不写,也不可写void。实际上构造函数有返回值,返回的就是构造函数所创建的对象。
3.在程序运行时,当新的对象被建立,该对象所属的类构造函数自动被调用,在该对象生存期中也只调用这一次。
4.构造函数可以重载。严格地讲,类中可以定义多个构造函数,它们由不同的参数表区分,系统在自动调用时按─般函数重载的规则选一个执行。
5.构造函数可以在类中定义,也可以在类中声明,在类外定义。
6.如果类说明中没有给出构造函数,则C++编译器自动给出一个缺省的构造函数:类名(void){ }。但只要我们定义了一个构造函数,系统就不会自动生成缺省的构造函数。只要构造函数是无参的或者只要各参数均有缺省值的,C++编译器都认为是缺省的构造函数,并且缺省的构造函数只能有一个。
问题:成员函数,为什么用this指针,而不是用引用?????



