C++派生类指针强制转换为基类指针,指针内容会发生变化吗?

class Person{
   
public:
		int a;
		int b;
};

class Man:public Person{
   
public:
		int c;
};

int main()
{
   
   Man man1;
   cout<<sizeof(man1)<<
派生类指针被转换为基类指针基类的数据不发生变化。转换只是改变了指针的类型,指向的对象仍然是派生类的对象。 这意味着,如果你通过基类指针修改了派生类的数据成员,那么这个修改影响到派生类对象本身,因为指针指向的是同一个对象。 以下是一个示例代码,演示了派生类指针转换为基类指针后对基类数据成员的修改: ```cpp #include <iostream> class Base { public: int data; }; class Derived : public Base { public: int derivedData; }; int main() { Derived derivedObj; derivedObj.data = 10; derivedObj.derivedData = 20; Base* basePtr = &derivedObj; // 派生类指针转换为基类指针 // 通过基类指针修改基类数据成员 basePtr->data = 30; std::cout << "Derived data: " << derivedObj.data << std::endl; // 输出: Derived data: 30 std::cout << "Derived derivedData: " << derivedObj.derivedData << std::endl; // 输出: Derived derivedData: 20 return 0; } ``` 在上述示例中,派生类 `Derived` 继承自基类 `Base`。我们创建了一个 `Derived` 对象,并通过派生类指针 `derivedObj` 访问并修改了基类数据成员 `data` 和派生类数据成员 `derivedData`。然后,我们将派生类指针转换为基类指针 `basePtr`,并通过基类指针修改了基类数据成员 `data`。最后,我们输出了派生类对象的数据成员,可以看到基类数据成员 `data` 的修改也影响了派生类对象的数据。 需要注意的是,派生类指针转换为基类指针后,无法通过基类指针访问派生类特有的数据成员和成员函数。如果需要访问派生类特有的成员,可以使用动态类型转换或虚函数来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值