根据提供的信息,我们可以总结出以下相关的C++知识点: ### 1. 类的成员访问权限 题目1至3涉及到了类的成员访问权限问题。 - **私有(private)**:只有类内的成员函数才能访问。 - **示例**:`int a;` 在此示例中,`a` 是私有的,因此只能由类 `A` 的成员函数访问。 - **保护(protected)**:类内的成员函数以及派生类中的成员函数都可以访问。 - **示例**:`double b;` 在此示例中,`b` 是受保护的,因此除了类 `A` 的成员函数外,派生自 `A` 的类也能访问 `b`。 - **公有(public)**:任何地方都能访问,包括类外部。 - **示例**:`char c; Int d;` 在此示例中,`c` 和 `d` 都是公开的,因此不仅类 `A` 的成员函数可以访问它们,类外部也可以访问。 ### 2. 构造函数和析构函数 - **构造函数**:用于初始化对象。 - **特性**: - 没有返回类型(题目4)。 - 如果未显式定义构造函数,编译器会自动生成一个默认构造函数(题目5)。 - **析构函数**: - **特性**(题目6): - 函数名是在类名前加波浪线 `~`。 - 没有返回类型。 - 无参数。 - 不可重载。 - 主要用于释放资源。 ### 3. 拷贝构造函数 - **定义**:当一个新对象被创建为已有对象的副本时调用的构造函数。 - **示例**(题目7): ```cpp class Student { public: Student(const Student& other) { /* ... */ } // ... 其他成员函数 ... }; void foo(Student obj) {} int main() { Student obj1; Student& ref = obj1; // 不调用拷贝构造函数 foo(obj1); // 调用拷贝构造函数 Student obj2 = ref; // 调用拷贝构造函数 return 0; } ``` ### 4. 指针和引用 - **指针**:指向内存地址。 - **示例**(题目8): ```cpp int a = 10; int *p; p = &a; cout << a++ << '\t' << (*p) << endl; ``` 输出结果为 `10 10`,因为 `a++` 先输出 `a` 的当前值,然后自增;`*p` 直接访问 `a` 的值,此时 `a` 已经自增为 `11`,但 `*p` 仍然输出 `10`。 - **引用**:别名。 ### 5. 静态成员变量 - **定义**:属于整个类,而不是某个特定对象。 - **示例**(题目9): ```cpp class Student{ public: static int count; Student() { count++; } }; int Student::count = 0; int main() { Student obj1; Student obj2; Student obj3; cout << obj1.count; } ``` 输出结果为 `3`,因为每次创建 `Student` 对象时都会使 `count` 自增。 ### 6. 结构体和指针 - **结构体**:一种用户定义的数据类型,可以包含不同类型的成员。 - **示例**(题目10): ```cpp struct student{ int id; char name[100]; }; int main(){ student s = { 10, "Tom" }; student *p; p = &s; cout << p->id << '\t' << s.name << endl; } ``` 输出结果为 `10 Tom`,使用指针 `p` 访问 `s` 的成员。 ### 7. 运算符重载 - **概念**:允许对已存在的运算符赋予多重含义。 - **示例**(题目11至13): - **单目运算符重载**:如 `++`。 - **双目运算符重载**:如 `+`。 - **运算符重载规则**: - 不可创建新运算符。 - 重载为成员函数时,对于双目运算符,通常只需要一个参数。 - 赋值运算符 `=` 通常重载为成员函数。 ### 8. 友元函数 - **定义**:虽然不是类的成员函数,但是它可以访问该类的私有和保护成员。 - **示例**(题目14): ```cpp class Student { private: int data; // ... 其他成员 ... }; friend void function(Student& obj); ``` 上述代码正确声明了一个友元函数。 以上知识点覆盖了题目中的主要内容,并对C++的基本概念进行了详细解释。希望这些内容能够帮助理解和掌握C++的相关知识点。
剩余11页未读,继续阅读
- 粉丝: 0
- 资源: 42
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助