面向对象的基本特征----笔记-1

来源:互联网 发布:山东大学 李利平 知乎 编辑:程序博客网 时间:2024/06/08 16:54

面向对象的程序设计提供了类的继承性,可通过对一个被称为基类的类增添不同的特性来派生出多种被称为派生类的特殊类;

C++语言支持两种多态性:编译时的多态性和运行时的多态性。编译时的多态性通过重载来实现。运行时的多态性通过虚函数来实现;

实际上,C++中的struct不仅可以包含各种数据成员,还可以包含有函数;


类内的成员在不指定访问权限时默认为privat,即不允许在类外直接访问,这是类与结构体的不同,结构体默认的访问权限是 public;


Student stu, *ps;

ps = &stu;

Student &stu1 = stu;   //定义对象stu的引用stu1


也可以在定义类的同时直接定义对象,方法是,在类的声明的右花括号的后面直接写出该类的对象名表。example:

class Student

{

......

}stu1, stu2;

用这种方法定义的对象是全局变量,在它的生命周期内,任何函数都可以使用它。




/**************************************************************************************************************************************/

/****************************************                 对象的存储和this指针             *****************************************************/

/**************************************************************************************************************************************/

同一个类的不同对象占用不同的存储空间,存储各自的数据成员值,但它们的成员函数代码是相同的,如果为每个对象的成员函数都分配一份存储空间显然是一种浪费。为此,C++编译系统在为对象分配存储空间时,只分配其数据成员所占用的存储空间,而不包含函数代码部分。同一段函数代码是如何识别所操作的不同对象的数据呢?这是因为C++为成员函数提供了一个this指针。

类的所有非静态成员函数都有一个隐含参数,即this指针。在创建一个类的对象时,this指针就被初始化指向该对象。当一个对象调用其成员函数时,this指针作为一个隐含参数,被赋值为当前调用对象的地址,即this指针指向了当前的调用对象。

this指针是一个常指针,一旦初始化就不能被修改和赋值。this指针作为一个隐含指针,是由系统自动设置的,它不能被显式声明,但可以在程序中输出this指针的值,

this指针的显式使用主要出现在运算符重载、自引用等场合。