当前位置: 首页 > news >正文

C#后遗症,掉了个坑,特此记录

String512 str1 = "123123"; 与 String512 str2; str2 = "456"; 有何区别?
之前用C#其实是不在意这个问题的,直到今天用CPP写了个String512类,才知道这里面原来还有说法..
首先, String512 str1 = "123123"; 这个语句已经有很多人掉进了坑里, 认为是"先有一个内容为123123的匿名对象生成,然后调用拷贝构造赋值给str1", 而事实是: 这个语句是直接调用了String512(const char*)这个有参构造, 没有任何临时对象生成!!如果没有String512(const char*),那么编译器会报错: 不存在const char[7]转换到String512的适当构造函数..
之所以有"生成了临时对象"的错觉,大概是跟
void foo(string a);
foo("123");
这种情景发生了混淆....
后面的两个语句呢?
String512 str2毫无疑问,只是简单的调用了String512的无参(默认)构造, 关键在于后一句: str2 = "456": 这个语句到底做了什么?
答案是这样的:
一) str2检查"="操作符有没有重载, 如果有, 那么就直接调用void operator=(const char*)
二) 如果"="操作符没有重载呢? 那么str2就会去调用有参构造String512(const char*).
三) 如果没有有参构造String512(const char*),又没有对"="进行重载呢? 于是编译器报错:没有与这些操作数匹配的"="运算符
http://www.rkmt.cn/news/13621.html

相关文章:

  • 日常掉坑记录: 关于位操作
  • 收汇核销简介
  • 软件工程第一次作业——物品复活系统
  • 完整教程:【C++】string类的常见接口的使用
  • 2025过滤器厂家最新推荐TOP5排行榜:覆盖环保过滤器、精密过滤器、高效过滤器,帮企业找到适配优质厂商
  • 实用指南:零基础学AI大模型之LangChain
  • 一款开源免费、组件丰富的 WPF UI 控件库,提供了 100 多款常用控件!
  • PostgreSQL patroni 高可用 4:HAProxy和Keepalived实现读写分离
  • C++篇 String实现避坑指南:搞定构造,拷贝与析构,增删查改,流提取流插入与比对大小 一文全解 - 教程
  • 深入解析:基于机器学习的智能贫血分析预测系统
  • AT_agc026_c [AGC026C] String Coloring
  • 反转链表-leetcode
  • 第45篇:AI+交通:自动驾驶、智能交通管理与出行优化 - 实践
  • 在macos下Termius无法连接局域网主机的一个经常出现但又很难排查的问题
  • vim学习使用笔记
  • 代码之美-代码整洁之道
  • Chrome for Testing availability
  • 递归算法实践--到仓合单助力京东物流提效增收
  • 计算机视觉(opencv)练习——抠图(图像裁剪与轮廓提取) - 详解
  • Tita项目与绩效一体化管理:驱动企业效能跃升的数字化引擎
  • 第七篇
  • 让每次语音唤醒都可靠,公牛沐光重构可观测体系
  • 第三周预习作业(AI)
  • Python 爬虫 HTTPS 实战,requests httpx aiohttp 抓取技巧、证书问题与抓包调试全流程 - 教程
  • 使用 Python 基于Ollama构建个人私有知识库(AI生成)
  • Codeforces Round 1048 (Div. 2) 补题笔记
  • React学习笔记(一)
  • IDEA大幅度提升编译速度配置 - 指南
  • 为AI注入灵魂:一种面向人机黑箱的元人文治理新范
  • 2025年5款主流服务管理工具大盘点!总有一款最值得你选! - RAIN