C++编程:类与友元函数复习重点

版权申诉
0 下载量 172 浏览量 更新于2024-06-27 收藏 571KB DOCX 举报
"C++ 谭浩强 总复习试卷2.docx" 这份文档是对C++编程语言中一些核心概念的复习试题,主要涵盖了类、静态成员、友元、运算符重载等主题。以下是相关知识点的详细解释: 1. 静态数据成员:静态数据成员属于类,而不是类的任何实例。它们可以通过类名直接访问,无需创建对象,如`AB::bb`。 2. 友元函数:友元函数不是类的成员,但被授予访问类的私有和保护成员的权限。在类定义中通过`friend`关键字声明,如`friend void F();` 3. 访问静态成员:静态成员可以通过对象或类名来引用,例如`AB::bb`或`AB ob; ob.bb`。 4. 友元的作用:友元提供了一种打破封装的方式,使得某些特定函数可以访问通常不可见的成员。 5. 友元函数的特性:友元函数不是类的成员,它们独立于类,但可以访问类的私有和保护成员。 6. 非静态成员函数:在非静态成员函数中,可以直接访问类的非静态成员,因为它们有一个隐含的`this`指针指向当前对象。 7. 不能重载的运算符:在C++中,某些运算符不能被重载,包括`.`、`->`、`::`、`?`。 8. 运算符重载形式:重载可以为类的成员函数(成员运算符)或全局函数(友元函数)。 9. 后置运算符重载:后置增量或减量运算符(如`++`、`--`)需要一个额外的参数,通常是`int`类型,用来区分前置和后置操作。 10. 静态成员函数与非静态成员:静态成员函数没有`this`指针,不能直接访问非静态成员,需要通过对象实例来访问。 11. 访问非静态成员的方式:静态成员函数要访问非静态成员,必须先通过对象实例。 12. 构造函数:构造函数也不能直接引用类中说明的非静态成员,因为它们在对象实例化之前不存在。 13. 静态数据成员初始化:静态数据成员需要在类外部进行初始化,并使用作用域运算符`::`。 14. 友元关系传递:类B是类A的友元,但类B的成员函数不自动成为类A的友元。 15. 友元关系的特点:友元关系不是传递的,即Y是X的友元,Z是Y的友元,但Z不一定是X的友元。 选择题相关知识点: 1. 友元函数不是类的成员,不需要在类内定义,也不破坏封装性和隐藏性。 2. 友元函数可以访问类的所有成员,包括私有和保护成员。 3. 静态数据成员是类的共享成员,可以在类外定义和初始化,并可以用类名直接调用。 4. 静态成员函数不拥有`this`指针,因此不能操作非静态成员,除非通过对象实例。 5. 关键字`friend`用于声明友元,友元关系是非继承的。 这些知识点构成了C++中面向对象编程的基础,理解和掌握它们对于编写高效、安全的C++代码至关重要。