c++中的父类指针‘
时间: 2024-03-10 07:41:08 浏览: 24
在C++中,父类指针是指向子类对象的指针,它可以用来访问子类对象中继承自父类的成员和方法。通过使用父类指针,可以实现多态性,即一个指针可以在不同的情况下指向不同的对象,并调用相应的方法。
父类指针的声明和使用方式如下:
```cpp
class Parent {
public:
void print() {
cout << "This is the parent class." << endl;
}
};
class Child : public Parent {
public:
void print() {
cout << "This is the child class." << endl;
}
};
int main() {
Parent* ptr; // 声明一个父类指针
Child obj; // 子类对象
ptr = &obj; // 将子类对象的地址赋给父类指针
ptr->print(); // 调用通过父类指针访问的方法,输出 "This is the child class."
}
```
在上面的例子中,我们声明了一个父类指针`ptr`,然后将子类对象`obj`的地址赋给了这个指针。通过父类指针调用`print()`方法时,实际上会调用子类中重写的`print()`方法。
这样做的好处是,我们可以通过父类指针来统一管理不同类型的子类对象,方便进行多态操作。同时,父类指针也可以用来实现动态绑定,即在运行时确定调用的方法。
相关问题
c++ 调用父类 指针
在 C++ 中,可以使用父类指针来调用父类的成员函数。这是由于多态性的特性。下面是一个示例代码:
```cpp
#include <iostream>
class Parent {
public:
void display() {
std::cout << "This is the parent class." << std::endl;
}
};
class Child : public Parent {
public:
void display() {
std::cout << "This is the child class." << std::endl;
}
};
int main() {
Parent* ptr = new Child();
ptr->display(); // 调用父类的display函数
delete ptr;
return 0;
}
```
在这个示例中,我们定义了一个父类 `Parent` 和一个子类 `Child`,子类继承自父类。在 `main` 函数中,我们创建了一个父类指针 `ptr` 并将其指向子类的对象。然后,我们通过这个指针调用 `display` 函数,这个函数是父类的成员函数。尽管 `ptr` 的静态类型是父类指针,但由于多态性的特性,实际上调用的是子类的重写函数。
输出结果为:
```
This is the child class.
```
注意,在使用父类指针调用成员函数时,如果子类中有重写(override)了父类的同名函数,那么将会调用子类中的函数。如果子类没有重写父类的函数,则会调用父类的函数。
c++ 父类指针和子类指针
在C++中,可以使用父类指针和子类指针来实现多态性。多态性是面向对象编程中的一个重要概念,它允许我们使用一个父类指针指向一个派生类对象,从而可以通过该指针调用派生类对象的成员函数。
假设有一个基类 `Base` 和两个派生类 `Derived1` 和 `Derived2`,可以通过以下方式使用父类指针和子类指针:
1. 父类指针指向派生类对象:
```
Base* ptr = new Derived1(); // 使用父类指针指向 Derived1 对象
// 或者
Base* ptr = new Derived2(); // 使用父类指针指向 Derived2 对象
```
2. 子类指针也可以直接指向派生类对象:
```
Derived1* ptr = new Derived1(); // 使用子类指针指向 Derived1 对象
// 或者
Derived2* ptr = new Derived2(); // 使用子类指针指向 Derived2 对象
```
通过使用父类指针,可以实现对派生类对象的访问和操作。然而,需要注意的是,父类指针只能访问到派生类对象中属于父类的成员和方法,而无法直接访问派生类特有的成员和方法。若需要访问派生类特有的成员和方法,则需要进行类型转换。
希望以上解答能够帮助到你!如果对此还有疑问,请继续提问。