类与对象课业总结

类与对象

1.基本概念

类是用户定义的数据和操作这些数据的函数的封装

类的定义包括行为和属性两个部分

属性以数据表示,行为通过函数实现

因通过结构生成新的数据类型存在建立变量时没有初始化机制另因类型定义和数据处理的分离,修改数据或修改函数都可能引起程序错误,不能保证数据的正常性和保持对数据处理的一致性

注意:类的成员可以是其他类的对象,但不能以类自身的对象作为本类的成员,而类自身的指针和引用可以作为类的成员

为什么要初始化?

静态成员变量在类中仅仅是声明,没有定义,所以要在类的外面定义,实际上是给静态成员变量分配空间

类定义的说明语句一般形式为

class<类名>

{

Public:

公有段数据成员和成员函数;//类中和类外可见

Protect:

保护段数据成员和成员函数;//类中和派生类中可见

Private

私有段数据成员和成员函数;//类中可见

}//以分号结束类定义语句

//私有段成员放在第一段可以省略private

//Struck也可以用来定义类,若不特别指出,则所有成员都是公有的

成员函数

类的成员函数是实现类的行为属性的成员

成员函数的定义:

返回值类型类名::成员函数名(参数表)

{

函数体

}

对象

对象是类的实例或实体

注意:必须在定义了类之后,才可以定义类的对象

注意事项:

类的任何成员都必须指定访问属性,一般将数据成员定义为私有成员或保护成员,将成员函数定义为公有成员

Class成员缺省情况是private

Struck成员缺省是public

内联函数

作用:减少频繁调用小子程序的运行时间开销

内联函数声明:inline 函数原型

注:仅在函数原型作一次声明

适用于1~5行小程序

不复杂,不递归

函数重载

函数名相同,但参数不相同(类型不同或者个数不同)的一组函数

编译器根据不同参数的类型和个数产生调用匹配

函数重载用于处理不同数据类型的类似任务

Int abs(int a)

Doubl abs(double f);

Intmain()

{cout<<abs(-5)<<endl;

Cout<<abs(-7.8)<<endl;}//类型不同

 

关于get set函数的相关

因不能直接访问私有成员,所以需要构造set get函数(在公有成员函数中)迂回一下

Voidsetx(floot  _x)

{x=_x;

}//p1.setx(1)

//在主函数里声明了一个point的对象//point p1

floatgetx()

{returnx;

}//cout<<p1.x<<endl

访问对象成员

使用对象包括访问对象的数据成员和调用成员函数,运算符“.”“->”用于访问对象成员。

This指针

C++为成员函数提供了一个称为this的隐含指针参数,所以,我们常常称成员函数拥有this指针。

当一个对象调用类的成员函数时,对象的地址被传递给this指针,即this指针指向了该对象,this是一个隐含指针,不能显式说明,但可以在成员函数中显式使用。

构造函数和析构函数

由于类体系结构的复杂性,建立对象的初始化工作和释放对象资源的变化很大,因此,通常需要用户自定义构造函数和析构函数,它们是类的特殊成员函数。

构造函数的作用是:为对象分配空间,为成员函数赋初值,请求其他资源

一个类只允许一个析构函数不能有参数,也不能有返回值,作用是完成一个清理工作,释放空间

构造函数(函数名和类名相同)建立一个对象时,作某些初始化工作(对数据赋予初值),不能指定返回类型

构造函数和析构函数不能定义在私有部分

原型:

类名::类名(参数表);

类名::~类名();

如果类中没有定义构造函数,系统将自动生成一个默认形式的构造函数,用于创建对象,默认构造函数形式:

类名::类名(){}//默认构造函数是一个空函数

#include<iostream>

Classdate{

Public:

Date();//无参构造函数

Date(inty,int m,int d);

Voidshowdate();

Private:

Intyear,month,day;

};

Date::date()//构造函数的实现

{year();month=0;day=0;}

Date::date(inty,int mint d)

{year=y;month=m;day=d;}

Inlinevoid date::showdate()

{cout<<year<<“·”······}

构造函数的初始化列表

1.使用构造函数的函数体进行初始化

2.使用构造函数的初始化列表进行初始化

Classdate

{  intd,m,y;//1.

Public......

初始化列表的形式:

成员名1(形参名1),成员名2(形参名2....

Class date

{int d,m,y;

Public:

Date(int dd,int mm):d(dd),m(mm),y(yy)

{                   }

静态成员函数

静态成员不属于一个单独的对象,而是为类的所有对象公有的

静态数据成员在定义或说明时前面加关键字static,如:

Class A

{

Int n;

Staticint s;

};

2. 心得体会

类作为初接触c++的基本内容,确实很难理解,到目前为止,我也不能独立写出一个系统,这一类型的知识十分零散,也因此增大了学习难度,可以尝试慢慢梳理清楚知识点,在我写这个博客的过程中,发现自己对很多知识点了解的非常片面,只浮于表面,实际上它所实现的功能与我的认知有很大的偏差,反映出我学习的不严谨性,接下来就要开始慢慢做系统了,不能让不会的知识点像滚雪球一样越滚越大。

对定义不用逐字逐句的背过,但一定要用自己的语言阐释出它的作用,这样才能做到真正理解,才能写出程序。

类定义中一个很重要的点就是初始化,而对于初始化,可以说是所有知识点中我学的最差的了,因为无法理解初始化的作用和在程序中的分量,可能未来的几天我会单独写一个关于类中数据初始化的总结博客。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值