【C++程序设计知识点】
1. 访问修饰符:C++中的访问修饰符有private、protected和public三种,它们决定了类成员的可见性和可访问性。private成员只能在类内部访问,protected成员允许类及其派生类访问,而public成员可以被任何地方访问。
2. 输入/输出流:cin是C++标准输入流,属于istream类的对象,用于从键盘或其他输入设备读取数据。而cout是标准输出流,属于ostream类的对象,用于向屏幕或其他输出设备写入数据。
3. this指针:this指针在每个非静态成员函数中都是隐式存在的,它指向调用该成员函数的对象。this不能显式声明或定义为其他类型,如整型变量。
4. 友元函数和运算符重载:友元函数可以访问类的私有和保护成员,但其本身不是类的成员。友元函数可以重载运算符,例如题目中的"θ",正确的调用方式是`operator θ (obj)`。运算符重载可以是成员函数或友元函数的形式。
5. 访问权限:根类的成员可以有private、protected和public三种访问权限,共三种。派生类的成员可以访问基类的public和protected成员,具体取决于派生方式(公有、私有或保护派生)。
6. 重载:C++支持函数名、运算符和函数模板的重载,但类名不能重载。
7. 静态成员函数:静态成员函数没有与特定对象关联的this指针,可以没有参数,但必须有返回类型。
8. 模板关键字:声明模板使用的关键字是`template`,用于创建泛型代码。
9. 构造函数调用:当声明一个类类型的数组,如`X obj[12]`,会为数组中的每个元素调用一次构造函数,因此是12次。
10. 无参数的函数:构造函数、友元函数和(类类型)转换函数都可以有参数,但运算符重载函数必须至少有一个参数。
**面向对象核心概念:**
- 抽象(数据封装):通过封装隐藏实现细节,只暴露必要的接口。
- 继承:子类继承父类的特性,实现代码复用。
- 多态性:不同对象对同一消息的不同响应,实现灵活的代码设计。
**根类成员:**
- 包括私有、保护和公有成员,以及静态成员。
**访问私有成员:**
- 除了类的非静态成员函数可以直接访问,还包括友元函数、类的派生类成员函数以及static成员函数。
**简单成员函数声明:**
- 不能包含`static`修饰符,因为静态成员函数没有this指针。
**名词解释:**
- 数据封装:将数据和操作数据的方法绑定在一起,形成一个独立的实体(类),对外只提供接口。
- 动态联编:运行时决定调用哪个函数,常与虚函数和多态性相关。
- 多继承:一个类可以从多个基类继承特性。
**构造函数与析构函数:**
- 构造函数不能继承,但可以被重载。
- 析构函数无返回类型,且不能是void。
**程序题分析:**
23. 这个程序展示了对象间的成员函数调用,包括对引用、指针的使用。set1()、set2()和set3()分别通过对象、引用和指针修改了对象的成员变量a。
24. 程序展示了继承关系,类A是基类,类B和C分别是A的派生类。main()中创建了A的对象和C的对象,输出显示了构造函数的调用顺序。
25. 这个程序展示了类成员的const常量属性。即使在全局作用域,也应通过对象访问类的成员。
26. 程序展示了对象的构造函数和成员函数的使用,以及对象的临时创建和作用域。注意A(100).put()创建了一个临时对象并调用了put()。
**编程题:**
27. 设计一个Figure类,包含两个float成员变量,提供赋值操作,并声明纯虚函数GetArea()。然后派生出Squ(长方形)和Tri(三角形)类,重载GetArea()函数,分别计算面积。
28. 定义一个Vector类,表示极坐标点,重载“-”运算符(成员函数实现)用于点的减法操作,重载“>>”运算符(友元函数实现)将极坐标对象转换为整数。
29. 编写一个函数模板,用于求变长整数列表的和。可以使用递归或迭代方法实现,关键在于利用模板的泛型编程能力处理不同类型的数据。
以上就是C++程序设计的相关知识点,包括类、对象、访问控制、构造与析构、继承、多态、运算符重载、模板等核心概念。