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

《Effective C++》条款15

在资源管理类中提供对原始资源的访问

class A
{...
};
int day(const A* ptr)
{...
}
int main()
{shared_ptr<A> ptr(new A);cout << day(ptr) << endl;
}

这样写是错误的。因为day函数要求的参数是指针,而你传的实际上是一个对象。

如何解决呢? 

cout << day(ptr.get()) << endl;

调用了智能指针提供的get()函数就可以显示转换类型。

但是显示转换却显得异常麻烦,所以我们需要隐式转换,这样对于用户而言会更方便一点。

 隐式类型转换

为什么建议用隐式类型转换?

class A
{
public:};
class B
{
public:A get(){return a;}
private:A a;
};

以上是显示类型转换函数,没有问题,但是麻烦的是每次都得调用get,显得不方便,所以建议使用隐式类型转换:

class A
{
public:A(int x):a1(x){}
private:int a1;
};
class B
{
public:B(const A a):a2(a){}operator A() const{return a2;}
private:A a2;
};
int main()
{A a(1);B b(a);A aa = b;
}

相关文章:

  • 【AI视野·今日NLP 自然语言处理论文速览 第六十五期】Mon, 30 Oct 2023
  • 设计模式 -- 代理模式(Proxy Pattern)
  • 【1567.乘积为正数的最长子数组长度】
  • 【ROS】RViz2源码分析(二):main函数及编译配置详解
  • 大数据基础设施搭建 - JDK
  • Java继承和多态(2)
  • 手撕无头单链表
  • YOLOv5项目实战(3)— 如何批量命名数据集中的图片
  • 代码随想录算法训练营Day 53 || 1143.最长公共子序列、1035.不相交的线、53. 最大子序和
  • 【T690 之十一】基于方寸EVB2开发板,结合 Eclipse+gdb+gdbserver 调试 CCAT 的流程总结
  • 场景图形管理-多视图多窗口渲染示例(4)
  • redis高级案列case
  • 二十七、W5100S/W5500+RP2040树莓派Pico<iperf 测速示例>
  • 【数据处理】Python:实现求条件分布函数 | 求平均值方差和协方差 | 求函数函数期望值的函数 | 概率论
  • 相机通用类之LMI激光三角相机(3D),软触发硬触发(飞拍),并输出halcon格式对象
  • 分享的文章《人生如棋》
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Druid 在有赞的实践
  • express如何解决request entity too large问题
  • JAVA并发编程--1.基础概念
  • JS函数式编程 数组部分风格 ES6版
  • mysql 5.6 原生Online DDL解析
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • nginx 负载服务器优化
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python 基础起步 (十) 什么叫函数?
  • Spring核心 Bean的高级装配
  • vue-cli在webpack的配置文件探究
  • 阿里云购买磁盘后挂载
  • 包装类对象
  • 闭包--闭包之tab栏切换(四)
  • 官方解决所有 npm 全局安装权限问题
  • 精彩代码 vue.js
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据结构java版之冒泡排序及优化
  • 提醒我喝水chrome插件开发指南
  • 学习笔记:对象,原型和继承(1)
  • 一个项目push到多个远程Git仓库
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 再谈express与koa的对比
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #git 撤消对文件的更改
  • #Java第九次作业--输入输出流和文件操作
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (1)Android开发优化---------UI优化
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (算法)Travel Information Center
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)基于IDEA的JAVA基础12
  • (转)树状数组