《C++面向对象程序设计》 谭浩强 第二章 总结

C++的四个特征:抽象,封装,继承,多态。

1.类是对象的抽象,对象是类的具体事例,换句话说,类是抽象的,对象是具体的。

2.任何一个对象都应该具有两个要素,即属性和行为,也就是说,每个对象都是由数据函数两部分组成的。

3.封装:

(1):将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相互独立,互不干扰。

(2):将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接受外界消息。

  C++的对象中的函数名就是对象的对外接口。

4.抽象:抽象的作用是表示同一类事物的本质,C和C++中的数据类型就是对一批具体的数的抽象。

5,继承与重用:

在已经建立的类的基础上再建立一个类,就叫做继承,采用继承的方法可以很方便的利用一个已有的类建立一个新的类,这就可以重用已有软件中的一部分甚至大部分,大大节省了编程工作量,这就是常说的“软件重用”的思想。

6.多态性:

所谓多态性是指:由继承而产生的相关的不同的类,其对象对同一消息会做出不同的反应。


面向对象程序设计:

程序设计者的任务包括两个方面:(1)设计所需的各种类和对象,即决定把哪些数据和操作封装在一起。(2)考虑怎样向有关对象发送消息,以完成所需的任务。

面向对象的软件开发:

(1):面向对象分析

(2):面向对象设计

(3):面向对象编程

(4):面向对象测试

(5):面向对象维护


7.声明类类型:

(1)类也是一种数据定义,它是一种广义上的数据类型,而类这种数据类型中的数据既包含数据,也包含操作数据的函数。

(2)声明类的方法是由声明结构体类型的方法发展而来,下面给出示例:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class student    //类头,接下来花括号中的成为类体  
  2. {  
  3. private://声明以下部分是私有的,外界不能对其进行任何操作  
  4.     int num;  
  5.     char name[20];  
  6.     char sex;  
  7. public://声明以下部分是公用的,外界可以调用该函数。  
  8.     void display()//该类中的数据对应的操作,这体现了把数据和操作封装在一起  
  9.     {  
  10.         cout << "num = " << num << endl;  
  11.         cout << "name = " << name << endl;  
  12.         cout << "sex = " << sex << endl;  
  13.     }  
  14. };//类体是由一对花括号包起来的,类的声明以分号结束  
  15. student stud1,stud2;  

(3) 成员访问限定符

private:被声明为私有的成员,只能被本类中的成员函数引用(友元类除外)

public:被声明为公用的成员,既可以被本类中的成员函数所引用,也可以被该类的作用域内的其它函数所引用。

protected:受保护的成员,不能被类外访问,但可以被派生类的成员函数访问。

(4)一个类体可以包含多个private和public部分。


8.定义对象的方法:

(1)先声明类类型,然后再定义对象

class 类名 对象名  如:class student stud1,stid2;

类名  对象名  如:student stud1,stud2;

(2)在声明类类型的同时定义对象:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class student     
  2. {  
  3. private:  
  4.    .  
  5.    .  
  6.    .  
  7. public:  
  8.     .  
  9.     .  
  10.     .  
  11. }stud1,stud2;  



3)不出现类名,直接定义对象:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class  
  2. {  
  3. private:  
  4.    .  
  5.    .  
  6.    .  
  7. public:  
  8.     .  
  9.     .  
  10.     .  
  11. }stud1,stud2;  



9.类和结构体类型的异同:

c++允许用struct来定义一个类型,将关键字class改为struct就可以了。

用struct声明的类,如果对其成员不做公共或私有的声明,系统默认为是公用的,但是class定义的类就会默认为是私有的。

10.类的成员函数:

(1).类的成员函数也是函数的一种,它也有返回值和函数类型,不同的是它是属于一个类的成员,出现在类体中。在使用类函数的时候,要注意调用它的权限以及它的作用区域。成员函数可以访问本类中任何成员。

(2).要想成员函数被调用,一般的做法是将该函数指定为公用的,它们是类的对外接口,这种函数的作用是支持其它函数的操作,是类中其他成员的工具函数。

(3).在类外定义成员函数:

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class student   
  2. {  
  3. private:  
  4.     int num;  
  5.     char name[20];  
  6.     char sex;  
  7. public:  
  8.     void display();  
  9. };  
  10.   
  11. void student ::  display() //“::”是作用域限定符,也称作用域运算符  
  12.     {  
  13.         cout << "num = " << num << endl;  
  14.         cout << "name = " << name << endl;  
  15.         cout << "sex = " << sex << endl;  
  16.     }  
  17.       
  18. student stud1,stud2;  
  19.   
  20. 如果在"::"的前面没有类名,如::display(),或者函数名前面既无类名又无作用域运算符,如display(),  
  21. 则说明该函数不属于任何类,这个函数不是成员函数,而是全局函数。  

11.inline函数

(1).如果成员函数不在类体内定义,而在类体外定义,系统并不把它默认为内置函数,如果想将这些成员函数指定为内置函数,应当用inline作显示声明。

(2).将一般函数指定为内置函数时,只要在函数的声明或函数的定义时对两者之一作inline声明即可;但是如果要将类函数指定为内置函数,应当注意:如果在类体外定义inline函数,则必须将类定义和成员函数的定义都放在同一个头文件中。

(3).成员函数的存储方式:

C++中,每个对象所占用的存储空间只是该对象的数据部分所占用的存储空间,而不包括函数代码所占用的存储空间。

为了分别对不同对象中的数据进行操作,C++专门设立了一个名为this的指针,用来指向不同的对象,当调用对象stud1的成员函数时,this指针就指向stud1,成员函数访问的就是stud1的成员。


注意:不论是否用inline声明,成员函数的代码段都不占用对象的存储空间。

12.对象成员的引用:

访问对象中的成员可以有3种方法

(1):通过对象名和成员运算符法访问对象中的成员。一般形式是:对象名.成员名,如

stud1.num = 1001;//'.'是成员运算符,用来对成员进行限定

注意:在类外只能访问public成员,而不能访问pritive成员。

(2).通过指向对象的指针访问对象中的成员。

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. class Time  
  2. {  
  3. public:  
  4.     int hour;  
  5.     int minute;  
  6. };  
  7. Time *p,t;//定义该类的一个对象和指针变量  
  8. p = &t;//使p指向对象t,即p中存储了t的地址  
  9. cout << p->hour << endl;  
  10. 或者 : cout << (*p).hour << endl;  
  11. 或者 : cout << t.hour << endl;  
  12. 三者等效  

3.通过对象的引用来访问对象中的成员

如果为对象定义了一个引用,他们是共占同一段存储单元的,实际上它们是同一个对象,只是用了不同的名字而已。

[html]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. Time t1;  
  2. Time &t2 = t1;//定义Time类引用对象t2,并使之初始化为t1  
  3. cout << t2.hour;//输出对象t1中的成员hour;  


13.类是一种抽象的数据类型,并不是一个实体,也不占存储空间,而对象是实际存在的实体,是占存储空间的,其数据成员是有值的,可以被引用。

14.如果在声明和定义函数时都指定默认参数,如果两者不一致,编译系统以函数声明时指定的默认参数值为准,在定义函数时指定的默认参数值不起作用。

15.定义成员函数时应该指定类名,因为定义的是该类中的成员函数,而调用成员函数时应该指定具体的对象名

16.共用接口与私有实现的分离

(1).C++通过类来实现封装性,把数据和与这些数据有关的操作封装在一个类中。

(2).在声明类时,一般都是把所有的数据指定为私有的,使它们与外界隔离,把需要让外界调用的成员函数指定为公用的,外界通过公用的函数来实现对数据的操作。

(3).接口与实现分离:一切与用户操作无关的部分都封装在机箱内,用户看不见,摸不着,改不了

同步:http://www.hypo.xyz/220.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值