C++ 使用对正在定义的变量的引用

2024-04-19

根据标准(不考虑...),以下代码是否有效 C++?

bool f(T& r)
{
    if(...)
    {
        r = ...;
        return true;
    }
    return false;
}

T x = (f(x) ? x : T());

众所周知,要在该项目使用的 GCC 版本中进行编译(4.1.2 和 3.2.3...甚至不让我开始...),但是should it?

Edit:我添加了一些细节,例如 f() 在概念上在原始代码中的样子。基本上,它的意思是初始化x在某些条件下。


从语法上来说是这样,但是如果你尝试这个

#include <iostream>
using namespace std;

typedef int T;
bool f(T& x)
{
    return true;
}
int main()
{
    T x = (f(x) ? x : T());
    cout << x;
}

它输出一些随机垃圾。 但是,如果您修改

bool f(T& x)
{
    x = 10;
    return true;
}

然后输出10。 在第一种情况下,对象x被声明,编译器分配一些伪任意值(所以你不初始化它),而在第二个你专门分配一个值(T(), i.e. 0)在声明之后,即初始化它。

我认为你的问题与这个问题类似:在初始化中使用新声明的变量(int x = x+1)? https://stackoverflow.com/questions/9820027/using-newly-declared-variable-in-initialization-int-x-x1

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

C++ 使用对正在定义的变量的引用 的相关文章

  • C++ 中的类 C# 事件,组合

    在过去的几个月里 我经常使用 C 并习惯了事件和委托 在类中使用组合非常容易 只需使用事件从组件获取消息 现在我正在尝试在 C 中做类似的事情 但不知道如何做 C 中的组合是如何完成的 我想到的唯一方法是继承 您从类派生并重写其函数以接收来
  • Eigen 未对齐数组断言

    我有一个类可以找到二维点集的凸包 它包含一个结构体 其中有 2Eigen Matrix
  • 如何在 .net 中为 Google 云存储签名 url

    我想知道如何使用 net中的谷歌云存储类生成signurl 我已经根据要求创建了字符串 GET 1388534400 bucket objectname 但我现在想用 p12 密钥签署这个 url 然后想让它变得 url 友好 该库没有显示
  • 退回 10 天后结束的拍卖

    我的 api xml 对于从当前到 10 天结束的返回拍卖工作正常 但对于 10 天后结束的列表不起作用 这是我下载结果的方式 public string DownLoad string url used to build entire i
  • Windows XP 风格:为什么我们在静态文本小部件上得到深灰色背景?

    我们正在使用 C 和 Win32 编写 Windows 桌面应用程序 我们的对话框具有 Windows XP 风格 的丑陋外观 静态文本的背景是灰色的 如果对话框背景也是灰色 这不是问题 但在背景为白色的选项卡控件内 文本的灰色背景非常明显
  • 致命错误:iostream:没有这样的文件或目录#include

    我在学习C 的时候遇到了一个问题 编译的时候遇到了错误 The details are as follows You seem to have not installed C support in MinGW If you are usin
  • 如何有效地合并两个 BST?

    如何合并两个二叉搜索树并保持BST的性质 如果我们决定从树中取出每个元素并将其插入到另一个元素中 则此方法的复杂度将为O n1 log n2 where n1是树的节点数 比如T1 我们已经拆分了 并且n2是另一棵树的节点数 比如T2 执行
  • 以有效的方式找到最近点

    我在 2d 平面上有一个点 例如 x0 y0 和一组 n 点 x1 y1 xn yn 我想在 a 中找到距离 x0 y0 最近的点比尝试所有要点要好得多 有什么解决办法吗 我还应该说我的观点是这样排序的 bool less point a
  • 显示函数的完全限定名称

    include
  • 使用 decltype() 声明函数签名

    是否可以声明一个函数bar与函数具有相同的签名foo int foo int a return 0 decltype foo bar return 1 imaginary syntax 我认为这同样适用于 typedef 和别名 您可以使用
  • 修改文件流

    我现在正在开发一个允许编辑非常大的文本文件 4Gb 的类 嗯 这可能听起来有点愚蠢 但我不明白如何修改流中的文本 这是我的代码 public long Replace String text1 String text2 long repla
  • C# 中的私有“集合” - 无法理解它

    我见过很多使用类似的东西编写的示例代码 请原谅这是多么可怕的罐头 public class Test public object Thingy get private set 不幸的是 这些例子从未真正解释为什么 set 被设置为私有 所以
  • C# 单元测试:测试使用 MapPath 的方法

    首先 我知道这个问题非常接近 如何在 C 单元测试中映射路径 https stackoverflow com questions 1231860 how to mappath in a unit test in c 但我希望它有不同的解决方
  • 计时器、事件和垃圾收集:我错过了什么吗?

    考虑以下代码 class TestTimerGC Form public TestTimerGC Button btnGC new Button btnGC Text GC btnGC Click sender e gt GC Collec
  • 关闭/清理“混合”文件描述符/套接字

    当我使用accept 创建一个套接字并使用fdopen 从中创建一个文件时 我需要做什么来清理所有内容 我是否需要对 FILE 执行 fclose 对套接字执行 shutdown 和 close 还是只需要 shutdown 和 或 clo
  • C# 计算 int 数组中值的平均值

    当我尝试打印 int 数组中的值的平均值时 它会打印出与我有值一样多的完全不同的东西 这是什么问题 int numbers numbers new int 5 Console WriteLine give five integer numb
  • 我可以让 C++ 编译器在编译时实例化对象吗?

    我正在编写一些代码 其中包含大量相当简单的对象 我希望它们在编译时创建 我认为编译器能够做到这一点 但我无法弄清楚如何做到 In C我可以执行以下操作 include
  • C++ 将浮点数转换为无符号字符?

    我是 C 新手 我想做了一些谷歌搜索sprintf可以完成这项工作 但是编译时出现错误 无法在unsigned char and a char 我需要一个无符号字符 因为我要打印到图像文件 0 255 RGB unsigned char p
  • 使用相同的 SqlConnection 对 SqlCommand.BeginExecuteNonQuery 进行多个并发调用

    我有一些可用的 C 代码 它使用 SqlConnection 创建临时表 例如 Foo 调用存储过程来填充这些临时表并将结果返回到 C 客户端 使用 C 对这些结果执行复杂的计算 并使用计算结果更新之前创建的临时表之一 由于整个过程中都会使
  • 使用accumulate计算数组double[]平均值的函数

    它一定是最常见的函数 每个人在某处都有代码片段 但我实际上花了不少于 1 5 小时在 SO 以及其他 C 网站上搜索它 但还没有找到解决方案 我想计算 a 的平均值double array 使用函数 我想将数组作为函数传递给参考 有数百万个

随机推荐

  • Java中如何正确计算字符串的长度?

    我知道有String length以及其中的各种方法Character它或多或少适用于代码单元 代码点 Java 中实际返回 Unicode 标准指定的结果的建议方法是什么 UAX 29 http www unicode org repor
  • 保持 UI 响应的 Thread.Sleep 替代方案?

    我在 Visual Studio 2008 中使用 C 完成所有这些工作 我想放慢算法的工作速度 以便用户可以观看它的工作 GUI 上有可见的周期性变化 所以我添加了Thread Sleep每次实例之后 问题是Thread Sleep 当设
  • 赋值运算符的参数必须是引用吗?

    C 中重载类的赋值运算符时 其参数必须是引用吗 例如 class MyClass public MyClass operator const MyClass rhs 是真的吗 class MyClass public MyClass ope
  • 如何在 if 语句中使用 fork()

    有人可以向我解释一下是什么吗fork 0意思是 据我了解 我认为这意味着 fork 不是 false 吗 或者如果 fork 是 true 那么 我不明白 Fork 如何是 true 或 false 因为它只是将进程的副本创建到父进程和子进
  • 根据第一列中的字母数将行与上一行连接起来

    编码新手 试图弄清楚如何修复损坏的 csv 文件 以便能够正确使用它 因此 该文件已从案例管理系统导出 并包含用户名 案例 花费时间 注释和日期字段 问题在于 偶尔注释中会有换行符 并且在导出 csv 时 工具不包含引号来将其定义为字段内的
  • 在 GUI MATLAB 中为静态文本赋值

    如何在 MATLAB GUI 中为静态文本赋值 双击指南中的文本打开属性编辑器 然后编辑 String 财产 您还可以设置 Tag 属性 以便您可以在 GUI 运行时对其进行编辑 如果您将标签设置为mytext 您可以将静态文本更改为 My
  • 如何在 Python Qt 应用程序中使用 KDE Okular 的文档视图小部件?

    我正在 Linux 上使用 Qt 4 8 和 PyQt 用 Python 3 4 编写桌面应用程序 有没有办法将 Okular 的 pdf 查看功能作为小部件使用 导入 如果是 怎么办 这对我有用 import sys from PyKDE
  • 类型错误:这不是日期对象

    知道为什么这在 Chrome 中不起作用吗 var foo new Date getDate foo 我收到一个 TypeError 这不是 Date 对象 然而 new Date getDate works 该函数在您的示例中未正确绑定
  • 使用 Google Guice 注入 java 属性

    我想使用 google guice 使属性在我的应用程序的所有类中可用 我定义了一个加载并绑定属性文件的模块测试属性 Property1 TEST Property2 25 包com test import java io FileNotF
  • GUI 中的 Matlab 缩放监听器

    我有一个 GUI 由 MATLAB 中的绘图和静态文本组成 我想在绘图上有一个缩放侦听器 以便我可以用放大倍率更新静态文本 无论如何 我可以做到这一点吗 脚本文件 或者您可以将其作为嵌套函数执行 无论您喜欢什么 f figure 1 z z
  • 通过 api 上传照片时 Foursquare 缺少文件上传/InvalidPhotoFormat 错误

    我正在尝试使用 api 将照片添加到 foursquare 页面 https api foursquare com v2 photos add https api foursquare com v2 photos add和以下node js
  • 是否可以通过 Viber API 获取消息历史记录?

    根据 API 文档 http developers viber com api rest bot api index html viber rest api http developers viber com api rest bot ap
  • PyQt 与 PySide 比较 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前在 Linux 上的 Qt 重型 C Python 环境中开发了许多应用程序 并根据需要移植到 PC Mac 我使用嵌入 C 中的 Pyt
  • Firebase 9(模块化 sdk web )替换 fieldPath

    我将以下代码与 Firebase SDK 8 一起使用 const db firebase firestore const collectionRef db collection collectionName var query colle
  • Vue:v-model 不适用于动态组件

    例如
  • Java中如何设置背景图片?

    我正在使用 Java 使用 BlueJ 作为 IDE 开发一个简单的平台游戏 现在 我在游戏中使用多边形和简单形状绘制了玩家 敌人精灵 平台和其他物品 最终我希望用实际图像替换它们 现在我想知道将图像 URL 或来自本地源 设置为游戏窗口
  • 在一个上下文中禁用 python 模块的日志记录,但在另一个上下文中禁用

    我有一些代码使用requests与日志 API 进行通信的模块 然而 requests本身 通过urllib3 进行日志记录 当然 我需要禁用日志记录 以便对日志记录 API 的请求不会导致日志无限循环 所以 在我进行日志记录调用的模块中
  • 使用 argparse 的 Python 组之间的依赖关系

    我开始学习Python 现在我正在学习Python的巨大好处argparse Using argparse 我创建了两组参数 group list and group simulate 每个组都有自己的参数 用户只能在每个组中指定一个参数
  • Android Facebook SDK v3.0 SSO LoginButton 返回 null GraphUser

    所以我有一个简单的登录按钮 可以在我的 oncreate 中执行此操作 mLoginButton LoginButton findViewById R id connect facebook button mLoginButton setA
  • C++ 使用对正在定义的变量的引用

    根据标准 不考虑 以下代码是否有效 C bool f T r if r return true return false T x f x x T 众所周知 要在该项目使用的 GCC 版本中进行编译 4 1 2 和 3 2 3 甚至不让我开始