You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++构造函数默认值使用及不新增方法修改成员实现指定输出

修改C++代码实现输出变更

问题描述

现有一段C++代码,希望控制台先输出10,再输出25,但目前两次输出都是10。要求在指定位置添加一行代码,且不新增成员方法,请问应该添加什么代码?

代码如下:

#include <iostream>
using namespace std; 

class person 
{
    int age;
public:
    person(int a = 10) : age(a) {}
    int get_age() const;
};
int person::get_age() const 
{
    return age;
}
int main() 
{
    person p1;
    cout << p1.get_age() << endl; // should print 10
//insert code here
    cout << p1.get_age() << endl; // should print 25
    return 0;
}

解决方案

在指定位置添加以下代码即可实现需求:

*reinterpret_cast<int*>(&p1) = 25;

原理说明

由于person类仅包含一个私有成员int age,且没有虚函数等会改变内存布局的元素,对象p1的起始内存地址就对应成员age的存储地址。通过reinterpret_cast将p1的地址强制转换为int*类型,就能直接修改age的值,从而让第二次输出变为25。

另外还有一种等价写法:

*(const_cast<int*>(&static_cast<const int&>(p1))) = 25;

内容的提问来源于stack exchange,提问作者R053

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:00:55