程序设计与算法(三)C++面向对象程序设计-郭炜 第三周
- C++程序翻译成C程序后再编译
- 类中的成员函数转换为了全局函数,此函数多一个参数
A* this
(A为一个类名)
- this 指针:指向该函数作用的对象
-
静态成员
static
- 静态成员变量
- 被所有对象共享
-
必须在定义类的文件中对静态成员变量进行声明,最好要初始化
- 既然是全局的,就可以用来统计对象的数目,在构造函数中增加某些量,析构函数中减少
- 静态成员函数
- 不作用于具体的对象
- 其中不能访问非静态成员变量和调用非静态成员函数
- 在类外时,公有的静态成员不需要对象就可以访问,如以
类名::成员名
的方式
- 本质上是全局变量/函数,不依赖于对象而存在
-
封闭类
- 有成员对象的类
- 之中的对象须按其构造函数的方式初始化
- 按说明次序调用成员对象的构造函数,再调用封闭类的构造函数
- 消亡时,先执行封闭类的析构函数,再执行成员对象的析构函数
- 关于常量
const
-
常量对象
- 在前面加关键字
- 其值不能被改变
- 不能调用非常量成员函数
-
常量成员函数
- 之中不能修改成员变量的值
- 不能调用同类的非常量成员函数(静态成员函数除外)
- 在成员函数说明后加
const
关键字
- 两个成员函数的名字和参数都一样,一个是
const
,一个不是,算作重载
- 对象的常引用
- 友元函数
- 一个类的友元函数可以访问该类的私有成员
- 声明函数时在其前加
friend
关键字
- 可以把一个类的成员函数说明为另一个类的友元
- 友元类
- 若A是B的友元类,则A的成员函数可以访问B的私有成员
- 两个类关系密切时,声明为友元比较方便,就像C的
struct
,不分辨私有公有了
- 友元类之间不能传递和继承