c++子类对象转为父类对象:非指针
时间: 2023-08-22 16:31:10 浏览: 122
c++(9)继承2
在 C++ 中,子类对象可以通过向上转型转化为父类对象。向上转型是将一个子类对象转换为父类对象的过程,这个过程是自动进行的。在向上转型后,父类对象只能访问子类对象中继承自父类的成员,而不能访问子类对象中特有的成员。
例如,假设有一个 Animal 类和一个 Dog 类继承自 Animal 类,可以将一个 Dog 对象转换为 Animal 对象,代码如下所示:
```c++
class Animal {
public:
virtual void speak() {
cout << "Animal speaks" << endl;
}
};
class Dog : public Animal {
public:
void speak() {
cout << "Dog barks" << endl;
}
};
int main() {
Dog d;
Animal a = d; // 向上转型
a.speak(); // 调用的是 Animal 的 speak 方法
return 0;
}
```
在上面的代码中,将一个 Dog 对象赋值给了 Animal 对象,向上转型后,通过对象调用的是 Animal 类中的 speak 方法。
需要注意的是,向上转型会进行对象的切片(Object Slicing),即将子类对象的特有信息丢失,只保留了父类对象的信息。因此,在实际开发中,如果需要处理子类对象的特有信息,应该使用指针或引用类型进行操作,而不是将子类对象转换为父类对象。
阅读全文