一段简单的代码,请写出输出结果。(有关operator+ 和 临时对象)

winnuke winnuke 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
// 一个简单的模拟string的类
#include <iostream>
#include <string>
using namespace std;

class MyString
{
public:
MyString(const char* pStr)
: m_pStr(NULL)
{
m_pStr = new char[strlen(pStr) + 1];
strcpy(m_pStr, pStr);
}

MyString(const MyString& myStr)
: m_pStr(NULL)
{
const char *pStr = myStr.GetStrBuffer();
m_pStr = new char[strlen(pStr) + 1];
strcpy(m_pStr, pStr);
}

~MyString()
{
delete [] m_pStr;
m_pStr = NULL;
}

MyString& operator += (const MyString& rv)
{
const char *pStr = rv.GetStrBuffer();
char *pTempStr = new char[strlen(m_pStr) + strlen(pStr) + 1];
strcpy(pTempStr, m_pStr);
strcat(pTempStr, pStr);
delete [] m_pStr;
m_pStr = pTempStr;
return *this;
}

const char* GetStrBuffer() const
{
return m_pStr;
}

private:
char *m_pStr;
};

MyString& operator + (const MyString& lv, const MyString& rv)
{
return (MyString(lv) += rv);
}

ostream& operator << (ostream& os, const MyString& myStr)
{
return os << myStr.GetStrBuffer();
}

int main(int argc, _TCHAR* argv[])
{
string stdstra("stdstra");
string stdstrb("stdstrb");
cout << stdstra + stdstrb << endl;
MyString strA("strA");
MyString strB("strB");
cout << strA + strB << endl;
return 0;
}

就这样一段代码,简单模拟了一个String类,但是却在strA + strB的时候卡壳了。
我不解的是operator +()返回的应该是一个临时对象,但是调试中没有发现临时对象的产生,在函数中就直接析构返回了。
请大侠们帮忙分析下,同样的std::string没有问题(返回的时候通过拷贝构造函数成功创建一个临时对象)。
...全文

相关推荐

K8S Operator开发环境配置和简单测试

K8S Operator开发环境配置和简单测试

xiaotian147

创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多时间尺度调度策略(Matlab代码实现)

创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多时间尺度调度策略(Matlab代码实现)内容概要:本文介绍了一种考虑需求侧响应的智慧楼宇多时间尺度调度策略,涵盖日前、日内非滚动、日内滚动调度以及实时修正四个阶段,旨在通过Matlab代码实现对智慧楼宇能源系统的优化管理。该策略结合需求侧响应机制,提升能源利用效率与系统运行经济性,适用于新能源背景下的智能建筑能源调度场景。; 适合人群:具备一定电力系统或能源管理基础知识,熟悉Matlab编程,从事科研或工程应用的研究人员与技术人员。; 使用场景及目标:① 实现智慧楼宇在多时间尺度下的精细化能源调度;② 探索需求侧响应在楼宇级能源管理系统中的建模与应用;③ 借助Matlab仿真平台完成调度策略的开发、测试与优化。; 阅读建议:建议读者结合Matlab代码与相关电力系统调度理论,逐步理解各调度阶段的建模逻辑,重点关注优化目标函数与约束条件的设计,同时推荐通过案例仿真验证策略的有效性。

荔枝科研社

Vue3 + Flask + MQTT:构建智慧医院患者服务大厅

Vue3 + Flask + MQTT:构建智慧医院患者服务大厅,mysql+flask+mqtt客服+ai

速易达网络

论文复现带有攻击角约束的大机动目标协同攻击制导律(Simulink仿真、Matlab代码实现)

内容概要:本文介绍了一个名为“带有攻击角约束的大机动目标协同攻击制导律”的Matlab/Simulink仿真项目,旨在通过复现相关学术论文中的制导算法,实现对高速、大机动目标的多导弹协同攻击,并满足特定的攻击角度要求。该资源详细提供了Simulink仿真模型和配套的Matlab代码,涉及超扭滑模(STSMC)、快速终端滑模(FTSMC)等先进控制算法的应用,以确保制导律的精确性、鲁棒性及多弹协同的同时攻击性能。项目不仅涵盖算法的数学建模与控制逻辑实现,还通过三维空间仿真验证了针对强机动目标的制导有效性。; 适合人群:具备Matlab/Simulink基础操作能力,从事或研究飞行器制导、导航与控制(GNC)、自动化、航空航天工程、兵器科学与技术等相关领域的研究生、科研人员及工程师。; 使用场景及目标:① 学习和复现带有攻击角约束的协同攻击制导算法;② 研究和对比不同滑模控制技术(如STSMC, FTSMC)在制导系统中的性能表现;③ 利用提供的仿真模型和代码进行二次开发、算法优化及拓展至三维多弹协同攻击场景。; 阅读建议:使用者应结合相关论文的理论部分,仔细阅读和调试所提供的Matlab代码与Simulink模型,重点关注制导律的设计逻辑、各模块之间的信号传递关系以及关键控制参数的设置与整定,以深入理解多弹协同制导与攻击角约束的实现原理。

吃兔子的大脑腐

新能源纯电动汽车驾驶员模块、整车控制器、减速器模块、车速模块等建模Simulink仿真模型

内容概要:本文档提供了新能源纯电动汽车多个关键模块的Simulink仿真模型资源,涵盖驾驶员模块、整车控制器、减速器模块、车速模块等核心子系统,通过模块化建模仿真手段,完整呈现了电动汽车动力传动与控制系统的动态响应机制与交互逻辑。资源不仅包括各独立模块的精细化建模,还涉及系统级集成与联合仿真,适用于开展整车性能分析、控制策略验证及能量管理优化等科研任务,旨在为新能源汽车领域的教学研究与工程开发提供可靠的技术参考与仿真平台支撑。; 适合人群:具备一定自动化、电气工程或车辆工程背景,从事新能源汽车系统仿真、控制算法开发等相关工作的研究人员、高校师生及工程技术人员。; 使用场景及目标:①用于新能源汽车动力系统建模与仿真教学实验;②支撑整车控制策略(如扭矩分配、能量回收)的设计与验证;③作为科研项目中系统级仿真平台的基础组件,提升开发效率与仿真精度; 阅读建议:建议使用者结合实际研究需求,深入理解各模块内部结构与参数设置,灵活调整模型以适配不同工况,并利用提供的完整资源目录进一步拓展学习与应用范围。

稷下科研社
评论 8
收藏 已收藏
分享
返回顶部
winnuke
C++ 语言 65,214 成员 250,514 内容