将普通数据成员作为参数传递给静态成员函数,这样静态成员函数就可以通过参数来访问普通数据成员举例
时间: 2024-02-27 21:57:51 浏览: 18
假设我们有一个类`Person`,其中有一个普通数据成员`age`,我们需要在静态成员函数`getAge`中访问它,可以将`age`作为参数传递给`getAge`函数:
```c++
class Person {
private:
int age;
public:
static int getAge(Person& p) {
return p.age;
}
};
```
在这个例子中,`getAge`是一个静态成员函数,它接收一个`Person`对象的引用作为参数,通过该参数来访问`Person`对象的`age`成员。在调用`getAge`时,需要传入一个`Person`对象的引用作为参数:
```c++
Person p;
p.age = 20;
int age = Person::getAge(p); // age的值为20
```
这样就可以通过参数来访问普通数据成员了。
相关问题
C++静态数据成员和静态成员函数以及new和delete以及指向对象的指针并举例
好的,下面我会分别举例说明。
静态数据成员的例子:
```C++
class MyClass {
public:
static int count; // 静态数据成员
MyClass() { count++; } // 每次创建对象时 count 自增
};
int MyClass::count = 0; // 静态数据成员的初始化
int main() {
MyClass obj1, obj2;
cout << MyClass::count << endl; // 输出 2,因为创建了两个 MyClass 的对象
return 0;
}
```
静态成员函数的例子:
```C++
class MyClass {
public:
static void print(int x) { cout << "x = " << x << endl; } // 静态成员函数
};
int main() {
MyClass::print(10); // 直接通过类名调用静态成员函数
return 0;
}
```
new和delete的例子:
```C++
int main() {
int *ptr = new int; // 动态分配一个 int 类型的内存空间
*ptr = 10; // 对该内存空间进行赋值
cout << *ptr << endl; // 输出 10
delete ptr; // 释放内存空间
return 0;
}
```
指向对象的指针的例子:
```C++
class MyClass {
public:
void print() { cout << "Hello" << endl; }
};
int main() {
MyClass obj;
MyClass *ptr = &obj; // 定义指向 MyClass 对象的指针
ptr->print(); // 通过指针调用 MyClass 对象的 print() 函数
return 0;
}
```
C++静态成员函数和非静态成员函数区别并举例
C++中静态成员函数和非静态成员函数的主要区别在于:
1. 调用方式不同。静态成员函数可以通过类名或对象名调用,而非静态成员函数只能通过对象名调用。
2. 静态成员函数没有this指针,因此不能访问非静态成员变量和非静态成员函数,只能访问静态成员变量和静态成员函数。
下面是一个示例代码:
```cpp
class MyClass {
public:
static int static_member;
int nonstatic_member;
static void static_function() {
// 只能访问静态成员变量和静态成员函数
static_member = 1;
nonstatic_member = 0; // 非法,无法访问非静态成员变量
nonstatic_function(); // 非法,无法访问非静态成员函数
}
void nonstatic_function() {
// 可以访问所有成员变量和成员函数
static_member = 1;
nonstatic_member = 0;
nonstatic_function();
}
};
int MyClass::static_member = 0;
int main() {
MyClass::static_function(); // 通过类名调用静态成员函数
MyClass obj;
obj.nonstatic_function(); // 通过对象名调用非静态成员函数
return 0;
}
```