首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
类和对象(4)
📅 2026/10/30 8:20:14
✍️ 爱科研究院
👁 阅读 3,247
1.匿名对象⽤类型(实参)定义出来的对象叫做匿名对象相⽐之前我们定义的 类型对象名(实参)定义出来的 叫有名对象。匿名对象⽣命周期只在当前⼀⾏⼀般临时定义⼀个对象当前⽤⼀下即可就可以定义匿名对象。形式类名括号class A { public: A(int a 0) :_a(a) { cout A(int a) endl; } ~A() { cout ~A() endl; } private: int _a; }; class Solution { public: int Sum_Solution(int n) { //... return n; } }; int main() { //1.普通对象 A aa1;//生命周期在整个main函数作用域 A aa21; // A aa1();不能这么定义对象因为编译器无法识别下面是⼀个函数声明还是对象定义 // 例如A func();返回值是A类型的函数声明无法区分 //但是我们可以这么定义匿名对象匿名对象的特点不用取名字 //但是他的⽣命周期只有这⼀⾏我们可以看到下⼀⾏他就会⾃动调⽤析构函数 //2.匿名对象 //匿名对象类似于临时对象匿名对象是我们主动创建的临时对象是编译器自己产生的。 A();//生命周期只在当前这一行 A(1); //匿名对象使用场景匿名对象在这样场景下就很好用,调用Sum_Solution函数 //一般情况下 Solution s1; cout s1.Sum_Solution(10) endl; //有了匿名对象后 cout Solution().Sum_Solution(10) endl; return 0; }2.对象拷⻉时的编译器优化现代编译器会为了尽可能提⾼程序的效率在不影响正确性的情况下会尽可能减少⼀些传参和传返 回值的过程中可以省略的拷⻉。如何优化C标准并没有严格规定各个编译器会根据情况⾃⾏处理。当前主流的相对新⼀点的编 译器对于连续⼀个表达式步骤中的连续拷⻉会进⾏合并优化有些更新更激进的编译器还会进⾏ 跨⾏跨表达式的合并优化类型转换传参编译器做的优化class A { public: A(int a 0) :_a1(a) { cout A(int a) endl; } A(const A aa) :_a1(aa._a1) { cout A(const A aa) endl; } ~A() { cout ~A() endl; } private: int _a1; }; void f1(A aa) { } int main() { //隐式类型转换构造拷贝构造》优化后直接构造 A aa1 1; cout endl endl; //传值传参-》无优化 A aa2;//调用构造函数 f1(aa2);//调用拷贝构造函数 cout endl endl; //构造拷贝构造》优化后直接构造 f1(A()); cout endl endl; //隐式类型转换构造拷贝构造》优化后直接构造 f1(1); cout endl endl; return 0; }A f2() { A aa; return aa;//传值返回不会用返回对象aa直接作为表达式的返回值 //而是调用拷贝构造产生一个返回值 //但编译器优化后 //aa 这个对象不在 f2 结束时析构而是推迟到调用者用完返回值之后才析构。 } int main() { f2(); return 0;; }A f2() { A aa; cout aa endl; return aa; } int main() { f2(); //传值返回不会用返回对象aa直接作为表达式的返回值 //而是调用拷贝构造产生一个返回值 //但编译器优化后只会调用一次构造 //aa 这个对象不在 f2 结束时析构而是推迟到调用者用完返回值之后才析构。 cout endl; A aa1 f2();//aa是aa1的一个别名先创建aa1编译器进行了极大的优化 cout aa1 endl; cout endl; return 0; }aa3不能和aa是同一块空间可能A aa3;与aa3f2()之间会做一些其他事情。不优化构造构造拷贝赋值运算符重载》优化后构造构造赋值(不产生临时对象)总结传参时尽可能不要使用传值传参尽可能使用匿名对象或者类型转换的方式传参A aa1(1); f1(aa1)//有名对象传参不推荐f1(A(1))//推荐匿名对象传参f1(1)//隐式类型转换传参传值返回接收返回值推荐使用拷贝构造方式接收返回值A aa2 f2();//推荐A aa3; aa3 f2();//不推荐
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/30 8:20:14
SSSSSSSS
2026/10/30 8:20:14
三个 root 密码别搞混:ESXi 上两阶段部署 vCenter Server 7.0 排错指南
2026/10/30 8:20:14
明确任务边界,设计验收标准,沉淀可复用能力,并把每一次构建转化为长期资产
2026/10/30 12:06:24
CH340、CP2102、FT232实战选型对照:工业级USB转串口芯片避坑指南
2026/10/30 12:06:24
B站会员购抢票脚本拆解:接口调用、验证码预演与GUI工具开发
2026/10/30 12:06:24
开源扫地机器人:全栈机器人工程的实践课堂
2026/10/30 12:06:24
效率工具软件选型与自动化指南:从工具收集到流程自动化
2026/10/30 12:06:24
用户脚本自动填问卷:DOM事件模拟与受控组件赋值实践
2026/10/30 12:01:20
Qt QWidget自研滚动选择器:无QML实现iOS风格Picker
2026/10/30 0:03:44
OpenShell 完全定制指南:从安装到深度配置,打造高效 Windows 开始菜单
2026/10/30 0:03:44
Superpowers技能体系全解析:从Skills引入到安装的完整指南
2026/10/30 0:03:44
TensorFlow实现Weibull生存模型预测债券违约概率
2026/10/29 21:03:42
全国计算机二级C语言真题PDF高效刷题指南
2026/10/29 21:03:35
requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南
2026/10/29 21:03:28
递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现
2026/10/30 3:44:27
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/30 3:44:25
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/30 3:44:29
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)