1.编写自定义类,增加静态成员,验证其语法特点(静态成员初始化、静态成 员函数调用等); 2.友元机制的使用(和static一样,注意类内和类外的写法不同);满足这些要求的一段完整代码
时间: 2024-09-25 10:14:17 浏览: 31
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
在C++中,为了编写自定义类并使用静态成员,首先需要了解静态成员的概念。静态成员属于类而不是特定的对象实例,它可以在类的范围内直接访问,并且每个类只有一个实例。以下是包含静态成员的简单示例:
```cpp
// 定义一个名为MyClass的类,其中包含静态变量和静态函数
class MyClass {
public:
// 静态成员初始化
static int staticVar = 0; // 类的静态整数变量
// 静态成员函数,无需创建对象即可调用
static void staticFunction() {
std::cout << "This is a static function." << std::endl;
}
// 友元声明,允许外部访问私有成员
friend class MyFriendClass; // 如果MyFriendClass不在当前文件,需包含头文件
private:
// 私有数据成员
int privateData;
protected:
// 保护数据成员
double protectedData;
};
// 友元类 MyFriendClass 的例子,用于证明友元的作用
class MyFriendClass {
public:
void accessPrivateMembers(MyClass& obj) {
// 在这里可以直接访问obj的私有成员
obj.privateData = 42;
obj.protectedData = 3.14;
}
};
int main() {
// 调用静态函数
MyClass::staticFunction();
// 访问静态变量
std::cout << "Static variable value: " << MyClass::staticVar << std::endl;
// 创建MyClass对象,虽然无法直接操作静态变量,可以通过类名访问
MyClass obj;
// obj.staticVar = 5; // 这不会改变静态变量值,因为它是类级别共享的
// 使用友元类访问私有成员
MyFriendClass friendObj;
friendObj.accessPrivateMembers(obj); // 直接修改对象的私有和保护成员
return 0;
}
```
在这个例子中,我们展示了如何定义静态成员,以及如何通过友元机制访问私有成员。请注意,友元只应用于特定情况,通常是为了提供必要的访问控制,而并非常规设计模式。
阅读全文