如果没有 endl,则重载 ostream 运算符分段错误

2023-12-27

class foo {
    public:
    friend ostream& operator << (ostream &os, const foo &f);
    foo(int n) : a(n) {}
    private:
    vector <int> a;
};

ostream& operator << (ostream &os, const foo &f) {
    for (int i = 0; i < f.a.size(); ++i)
        os << f.a[i] << " ";
    os << endl; // why is this line a must?
}

int main(void) {
    foo f(2);
    cout << f << endl;
    return 0;
}

在上面的代码中,如果删除标记的行,就会出现段错误错误,有人可以解释为什么吗?


ostream& operator << (ostream &os, const foo &f) {
    for (int i = 0; i < f.a.size(); ++i)
        os << f.a[i] << " ";
    os << endl; // why is this line a must?
}

不是强制性的。段错误是因为你没有返回而引起的os

ostream& operator << (ostream &os, const foo &f) {
    for (int i = 0; i < f.a.size(); ++i)
        os << f.a[i] << " ";
    return os; // Here
}

如果您不返回 ostream,则这是未定义的行为。这endl正在冲洗你的os这里。这就是为什么它看起来有效。

编辑:根据 Bo Persson 的说法,为什么它在这种情况下起作用

os

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果没有 endl,则重载 ostream 运算符分段错误 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何使用 ReactiveList 以便在添加新项目时更新 UI

    我正在创建一个带有列表的 Xamarin Forms 应用程序 itemSource 是一个reactiveList 但是 向列表添加新项目不会更新 UI 这样做的正确方法是什么 列表定义 listView new ListView var
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new

随机推荐

  • Angular 2关注点击/事件后的第一个无效输入

    我有一个奇怪的要求 希望得到一些帮助 我需要关注单击按钮 而不是提交 后第一个发现的表单无效输入 该表单相当大 因此屏幕需要滚动到第一个无效输入 这个 AngularJS 答案正是我所需要的 但不知道这样的指令是否适合 Angular 2
  • Javascript函数改变变量范围

    我试图在匿名函数之外声明一个函数 但仍然可以访问所有匿名函数变量 下面演示了我正在谈论的内容 我只需要摆脱 eval 即可 Used to determine where the variable is being stored var v
  • 如何从 Kubernetes 获取部署日志?

    我正在 Kubernetes 集群 v1 15 2 中创建 InfluxDB 部署 这是我的 yaml 文件 apiVersion extensions v1beta1 kind Deployment metadata name monit
  • 字典的分割字符串值

    我有这本词典 1 1 2 2 2 3 3 2 3 我想将每个键的值分离到单个元素的列表中 所以我希望它看起来像这样 1 1 2 2 2 3 使用字典理解 gt gt gt d 1 1 2 2 2 3 3 2 3 4 4 3 1 5 3 4
  • null / 空 json 如何检查它而不输出?

    我有一个 json 编码的数据集 可以通过 ajax 检索 我试图检索的一些数据点将返回空或空 但是 我不希望将这些 null 或空显示给最终用户 或传递给其他函数 我现在正在做的是检查 if this cityState null do
  • 更改表列以接受更多字符

    Microsoft SQL Server 2008 更改现有列以允许更多字符的命令是什么 如果我只是扩展该列 这会对该列中以前的任何条目产生影响吗 我有一个 URL 列 需要添加大约 100 个字符 ALTER TABLE table AL
  • if 条件的更好算法

    我有一个代码 其中包含 bool fn all the following are boolean functions return isTrue isMsgReceived isMsgSent 问题是每个返回布尔函数本身都很长并且需要大量
  • C# Streamwriter 帮助

    嘿伙计们 我需要一点帮助 我需要我的 Streamwriter 正确显示从 Directory Getfiles 调用中获得的文件名 string lines listBox1 Items ToString string sourcefol
  • Android - 尝试在空对象引用上调用虚拟方法“void android.view.View.getBoundsOnScreen(android.graphics.Rect)”

    我有一个简单的地址表格 如下所示 Java public class NewAddressActivity extends AppCompatActivity private TextInputLayout mStreetLayout pr
  • 使用事务范围和查询

    我正在将实体框架与 Oracle DB 一起使用 我尝试使用事务范围 因为我想要回滚选项 using TransactionScope ts new TransactionScope 问题是 当我尝试在 using 语句内查询时 会引发异常
  • 本地安装RODBC时如何指定include和lib目录?

    我正在尝试使用命令 R CMD INSTALL l my local path RODBC tar gz 安装 RODBC 但它找不到 sql h 和 sqlext h 如何将 include 和 lib 路径传递给此命令 我最近在尝试在
  • MVC 6 更改返回内容类型

    我似乎无法在新的 Asp net MVC 6 中更改控制器方法的返回内容类型 我尝试了各种变体 Context Response Headers Add Content type text x vcard 在过去的 WebApi 时代 我可
  • 如何在Azure数据工厂中使用formatDateTime?

    我想将管道触发时间格式化为以下格式 10 Mar 2021 08 31 59 AM 这是我正在使用的代码 formatDateTime pipeline TriggerTime DD MON YYYY HH MI SS AM PM 然而 日
  • 使用 Windows.Forms.Cursor 作为 WPF 光标?

    我有一个 System Windows Forms Cursor 想将其分配给 WPF 的 image Cursor 属性 该属性恰好是 System Windows Input Cursor 类型 这里的约束是 前一个 Cursor 类型
  • 如何在FIX中手动计算CheckSum?

    我有一个FixMessage我想手动计算校验和 8 FIX 4 2 9 49 35 5 34 1 49 ARCA 52 20150916 04 14 05 306 56 TW 10 157 这里的体长是这样计算的 8 FIX 4 2 9 4
  • 使用 Spring Boot 的 AWS Cognito 用户池服务器端流程

    我想使用 Spring Boot 实现 AWS Cognito 服务器端流程 我不太明白流程应该是什么样的 我应该与它一起使用 spring oauth 吗 需求是这样的 作为管理员创建用户并授予这些创建的用户访问权限以使用 API Gat
  • 如何在一页上使用多个 h:messages 或 p:messages?

    我正在使用 PrimeFacesp 消息但我认为这个问题同样适用于h 消息 我有一个复合组件来处理每个页面顶部的登录 注销 它位于 Facelets 模板中 为了处理登录错误 它有一个p 消息其中的组件 在内容区域 我通常有一个表单 其中还
  • 未指定排序选项且未指定搜索查询时,Elastic Search 如何排序

    我想知道当没有指定搜索查询 我只是过滤文档 并且没有指定排序选项时 弹性搜索如何排序 在哪个字段上 看起来排序不是随机的 默认排序顺序是 score 但是当您不指定搜索查询时分数始终为1 你做对了 然后它或多或少是随机的 分数为 1 据我所
  • 如果未安装,请安装包(库)[重复]

    这个问题在这里已经有答案了 我在 R 中使用了几个软件包 但我在可能已安装或尚未安装部分 全部软件包的计算机中运行脚本 这些包是zoo quantmod data table 还有更多 这是我尝试过的 有没有办法检查这些软件包是否已安装 如
  • 如果没有 endl,则重载 ostream 运算符分段错误

    class foo public friend ostream operator lt lt ostream os const foo f foo int n a n private vector