函数怎么修改类的数据成员
时间: 2023-12-10 17:40:09 浏览: 37
类的数据成员可以通过类的成员函数进行修改。如果数据成员是公有的,那么可以在类的外部直接通过对象名访问和修改;如果是私有的,那么只能通过类的成员函数访问和修改。
下面是一个示例代码,其中有一个私有数据成员 `age`,并且提供了两个公有成员函数 `setAge()` 和 `getAge()` 来访问和修改 `age` 数据成员。
```C++
#include <iostream>
using namespace std;
class Person {
private:
int age;
public:
void setAge(int a) {
age = a;
}
int getAge() {
return age;
}
};
int main() {
Person p;
p.setAge(20); // 通过 setAge() 函数修改 age 数据成员的值
cout << "Age: " << p.getAge() << endl; // 通过 getAge() 函数获取 age 数据成员的值
return 0;
}
```
运行结果为:
```
Age: 20
```
相关问题
const 类成员函数不能修改类数据成员
是的,const 类成员函数被称为常量成员函数,它不能修改类的数据成员,也不能调用非 const 成员函数,以保证对象在调用这个函数时不被修改。如果在 const 成员函数中对数据成员进行修改操作,编译器会报错。常量成员函数的声明格式为在函数声明末尾加上 const 关键字。例如:
```
class MyClass {
public:
void myFunc() const;
};
void MyClass::myFunc() const {
// 不能修改数据成员
// 或调用非 const 成员函数
}
```
构造函数初始化数据成员
在 C++ 中,构造函数是用于初始化类的对象的特殊成员函数。构造函数可以在对象被创建时自动调用,以确保对象被正确初始化。构造函数可以在类的定义中声明和定义,也可以在类的外部定义。
对于类的数据成员,可以在构造函数的初始化列表中进行初始化。初始化列表是在构造函数的参数列表之后的冒号后面列出的一系列初始化语句,每个初始化语句用逗号分隔。例如:
```c++
class MyClass {
public:
MyClass(int a, int b) : x(a), y(b) {} // 初始化列表
private:
int x;
int y;
};
```
在上面的例子中,MyClass 类有两个 int 类型的数据成员 x 和 y,它们被分别初始化为构造函数参数列表中传入的 a 和 b。这样做可以提高代码的效率,因为在初始化列表中初始化数据成员比在构造函数体中赋值更高效。
需要注意的是,如果一个数据成员没有出现在构造函数的初始化列表中,它将被默认初始化。对于内置类型,它们的默认值是未定义的,而对于自定义类型,它们的默认构造函数将被调用。因此,在定义类时,应该考虑如何正确初始化所有的数据成员。