放弃 const of *this 是否会导致未定义的行为?

2024-01-28

以下代码可编译。看起来运行良好。

但这会导致任何未定义的行为吗?

我想抛弃 const*this.

这是为了允许const my_iterator改变它指向的数据。

Test:

class A {
public:
    A(const int x) : x_(x) {}
    void set_x(int x) { x_ = x; }
    void set_x2(const int x) const {
        const_cast<A&>(*this).set_x(x);
    }
    int x_;
};

int main() {
    A a(10);
    a.set_x2(100);
}

你的例子不是未定义的行为,因为a is not const。然而,如果a were const, 这将是:

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

放弃 const of *this 是否会导致未定义的行为? 的相关文章

随机推荐

  • Spring 视图不尊重 @UIScope 注释?

    我遇到 Vaadin spring 注释的问题 UIScope 定义如下 SpringComponent SpringView name AdminView VIEW NAME UIScope public class AdminView
  • Symfony 4 全局路由前缀

    我在 Symfony 4 应用程序中找不到有关全局路由前缀的任何信息 唯一的thing https symfony com blog new in symfony 3 4 prefix all controller route names我
  • ImportError:尝试导入祝福时没有名为“_curses”的模块

    我正在尝试运行这个 from blessings import Terminal t Terminal print t bold Hi there print t bold red on bright green It hurts my e
  • 处理不平衡问题后,数据高度倾斜,准确性下降

    在对数据进行预处理 例如缺失值替换和异常值检测 后 我使用随机化方法对数据进行分区 并使用 WEKA 删除百分比过滤器 我的数据集是一个高度倾斜的数据集 不平衡比为 6 1 对应于负类和正类 如果我使用朴素贝叶斯分类器对数据进行分类 而不处
  • TSQL:字符串错误的日期时间

    有一些与此相关的帖子 但我对 TSQL 很陌生 我无法理解它们 所以请原谅 我的程序有 BEGIN TRY INSERT INTO dbo myprocedure Mydate VALUES CONVERT DATETIME mydate
  • C# using 语句捕获错误

    我只是查看 using 语句 我一直知道它的作用 但直到现在还没有尝试使用它 我想出了以下代码 using SqlCommand cmd new SqlCommand reportDataSource new SqlConnection S
  • 调用远程ESB客户端错误

    我正在尝试从远程客户端发送和 esb 消息 但我不断收到此错误 org jboss soa esb listeners message MessageDeliverException org apache ws scout transpor
  • 如何使 Google Chrome 扩展示例正常工作?

    最近我决定编写一个非常简单的 Google Chrome 扩展 它要做的就是当用户按下扩展程序的按钮时 使用 JavaScript 从网页中隐藏一些 DOM 元素 由于我对 Chrome 扩展一无所知 所以我开始阅读教程 然后我发现了这个
  • 了解青春痘

    我不明白这个 DI容器 是如何使用的 官方网站上显示的示例没有告诉我任何信息 http pimple sensiolabs org http pimple sensiolabs org 基本上我有一个简单的站点 它由一组类组成 DB 类 C
  • Emacs:Tramp 不起作用

    我尝试通过 Emacs 通过 Tramp 打开远程文件 require tramp setq tramp default method ssh 我收到一条来自 Emacs 的消息 TRAMP 等待远程 shell 的提示 Emacs 挂起并
  • 如何从AVAudioEngine的installTap高频获取缓冲区

    我希望像 iOS 语音备忘录应用程序一样在屏幕上渲染音频波形 因此我使用 AVAudioEngine 并在输入节点上安装 Tap 但它以 0 1 秒的频率提供最快的回调 我需要以更快的频率获取缓冲区数据 以便可以在屏幕上绘制越来越多的波形
  • T4 FieldName 采用驼峰命名法,不带下划线?

    我正在使用 T4 生成一些类定义 并发现我的字段名称前面有一个下划线 我已经设定 code CamelCaseFields true 只是为了安全起见 尽管我知道这是默认设置 但最终仍然是 myField 而不是 myField 如何生成不
  • 将日志文件转换为 json?

    我有以下格式的日志文件 我需要使用 python 将日志文件转换为 json 文件 怎样才能制作出来呢 2015 07 13 00 03 05 976 hostname 1499918592344 UZA Anonymous Anonymo
  • 不带无参数 DbContext 和 DbContextFactory 构造函数的 Add-Migration

    我的应用程序没有无参数构造函数DbContext实现 我不喜欢提供无参数构造函数IDbContextFactory lt gt 执行 原因是我想控制 DbContext 指向的位置 这就是为什么我的所有构造函数都会请求 Connection
  • Unicode 转换为 ASCII 如何知道将 Ł 映射到 L

    我惊讶地发现没有 Unicode 规范化 字符将其映射为类似的东西L combining stroke 这是我理解原因的最佳解释 映射到L而不是 从支持 Unicode 的编码转换为 ASCII 或不具有 Unicode 功能的代码页时 特
  • C# 中的 ONVIF api 捕获图像

    我有一个 ONVIF 网络摄像机 我想从相机捕获图像 以便可以处理该图像并将其保存到文件系统 我发现有一个onvif api提供了一个方法GetSnapshotUri这应该为我提供图像快照 http www onvif org onvif
  • npm 错误! enoent ENOENT: 没有这样的文件或目录,打开 'C:\Users\...\package.json'

    我正在做一个关于 VueJS 的教程 我对此完全陌生 所以不太确定我在做什么 我按照所有说明进行操作 安装了所有软件包 这是我在 VSCode 终端中进行的检查 PS C Users Documents Vue Getting Starte
  • 使用 Thoughtbot Bourbon/Neat 重新排序列

    我正在寻找有关如何使用 Thoughtbot 的 Neat 网格框架在不同断点处重新排序 移动列位置的最佳解决方案 I would like to shift elements in my header from this in deskt
  • 将文件直接导入到 SVN 存储库,无需先签出

    我正在使用 SVN 并且在远程计算机上有一个存储库 有时 在本地计算机上工作时 我意识到需要向存储库添加一些新文件 我知道的通常程序是 在我本地计算机上的当前文件夹中签出整个 SVN 存储库 进入那里 将有趣的文件复制到此处 commit
  • 放弃 const of *this 是否会导致未定义的行为?

    以下代码可编译 看起来运行良好 但这会导致任何未定义的行为吗 我想抛弃 const this 这是为了允许const my iterator改变它指向的数据 Test class A public A const int x x x voi