在派生类中调用另一个类的变量
时间: 2023-06-10 09:08:17 浏览: 57
在派生类中调用另一个类的变量,需要在派生类中创建一个对象并使用该对象来访问另一个类的变量。
例如,假设有一个基类Person和一个派生类Student,Person类有一个名为name的私有变量,Student类想要访问name变量,可以在Student类中创建一个Person对象并使用该对象访问name变量。
示例代码如下:
```
class Person {
private:
string name;
public:
Person(string n) {
name = n;
}
};
class Student : public Person {
public:
Student(string n) : Person(n) {
// 在构造函数中使用基类的name变量
cout << "学生姓名:" << Person::name << endl;
}
};
```
在上面的代码中,Student类继承了Person类,并在构造函数中创建了一个Person对象。在构造函数中,可以使用“Person::name”语法来访问Person类的name变量。
相关问题
在派生类的友元函数中调用另一个类的变量
在派生类中定义的友元函数中,可以直接访问派生类和基类的公有成员和保护成员,但不能访问私有成员。如果你想访问另一个类的变量,需要在该类中定义一个公有成员函数,用来返回该变量的值,然后在友元函数中调用该函数。
例如,假设你有两个类 A 和 B,B 是 A 的派生类,并且你在 B 中定义了一个友元函数 f。如果你想在 f 中访问 A 的私有变量 x,你可以在 A 中定义一个公有成员函数 getX(),用来返回 x 的值。然后在 f 中,你可以通过调用 b.getX()(其中 b 是 B 类的对象)来获取 x 的值。
下面是一个示例代码:
```
class A {
private:
int x;
public:
A() : x(0) {}
int getX() { return x; }
friend void f(B b);
};
class B : public A {
friend void f(B b);
};
void f(B b) {
int x = b.getX(); // 访问 A 的私有变量 x
// ...
}
```
基类中private变量怎么被派生类重新赋值
在C++中,基类中的私有变量是无法被派生类直接访问的,因此无法直接重新赋值。
但是,可以通过在基类中提供公共成员函数来访问和修改私有变量。如果需要在派生类中修改基类的私有变量,可以在派生类中定义一个公共成员函数来调用基类中的公共成员函数。
例如,假设基类中有一个私有变量`x`,可以在基类中定义一个公共成员函数`setX()`来设置`x`的值:
```c++
class Base {
private:
int x;
public:
void setX(int value) {
x = value;
}
};
```
然后,在派生类中可以通过调用基类的`setX()`函数来修改基类中的私有变量`x`的值:
```c++
class Derived : public Base {
public:
void modifyX(int value) {
setX(value);
}
};
```
这样,在派生类中就可以通过调用`modifyX()`函数来修改基类中的私有变量`x`的值了。