1.编写自定义类,增加静态成员,验证其语法特点(静态成员初始化、静态成 员函数调用等); 2.友元机制的使用(和static一样,注意类内和类外的写法不同);
时间: 2024-09-25 19:14:13 浏览: 41
1. 编写自定义类时,静态成员(static)是一种特殊的成员变量,它不属于某个特定的对象实例,而是属于整个类。静态成员的特点在于它们的生命周期与类的生命周期同步,创建类时就存在,且所有类的实例共享同一份静态变量副本。在类中定义静态成员时,需要在声明前加上"static"关键字,并在构造函数外部进行初始化,因为静态成员不会通过类的实例来创建。
例如:
```cpp
class MyClass {
public:
static int count;
MyClass() { // 静态成员不会在类的构造函数中初始化
count++; // 调用静态成员函数
}
};
int MyClass::count = 0; // 初始化静态成员
```
静态成员函数可以直接通过类名调用,无需创建对象实例:
```cpp
MyClass::count(); // 直接访问静态成员函数
```
2. 友元(Friend)是一个允许一个类访问另一个类私有部分的功能。在C++中,友元分为友元类(class friend)和友元函数(friend function)。友元主要用于解决封装性的限制,让一些非关联的类能够访问私有或保护成员。
对于静态友元,如果你希望在类外部访问类的静态成员,可以这样做:
```cpp
class MyClass {
private:
static int secret;
friend class StaticFriendClass; // 类内的声明
};
int MyClass::secret = 0; // 静态友元类的声明
// 在StaticFriendClass中能访问MyClass的静态秘密
class StaticFriendClass {
public:
void showSecret() {
std::cout << "Static secret: " << MyClass::secret << std::endl;
}
};
```
需要注意的是,友元关系不是自动传递给继承的子类的,每个类都需要明确指定友元。此外,友元会破坏封装性,所以在设计时要谨慎使用。
阅读全文