static成员和对象成员
时间: 2024-05-10 08:15:40 浏览: 6
静态成员和对象成员都是类成员,但它们有一些不同。
静态成员(static member)是属于整个类的,而不是属于某个对象的。它们在类的所有对象之间共享,并且只有一个副本存在于内存中。静态成员可以是数据成员或函数成员。可以通过类名或对象名来访问静态成员,但建议使用类名来访问。
对象成员(non-static member)是属于类的一个对象的,每个对象都有自己的对象成员。对象成员只能通过对象名来访问。
下面是一个示例类,其中包含静态成员和对象成员:
```c++
class MyClass {
public:
static int static_member; // 静态成员
int object_member; // 对象成员
static void static_function() { // 静态成员函数
std::cout << "This is a static function." << std::endl;
}
void object_function() { // 对象成员函数
std::cout << "This is an object function." << std::endl;
}
};
int MyClass::static_member = 0; // 静态成员初始化
int main() {
MyClass obj1, obj2;
obj1.object_member = 1;
obj2.object_member = 2;
MyClass::static_member = 3; // 通过类名访问静态成员
std::cout << obj1.object_member << std::endl; // 1
std::cout << obj2.object_member << std::endl; // 2
std::cout << MyClass::static_member << std::endl; // 3
obj1.object_function(); // 通过对象名访问对象成员函数
MyClass::static_function(); // 通过类名访问静态成员函数
return 0;
}
```
在上面的示例中,`static_member`是静态成员,`object_member`是对象成员。`static_function()`是静态成员函数,`object_function()`是对象成员函数。我们通过类名和对象名分别访问了静态成员和对象成员。