30 C++ 类型转换构造函数 和 类型转换函数 operator type(类对象)

类型转换构造函数 定义

//类型转换构造函数:
//只有一个参数的构造函数,
//且参数不是自己的const 引用的构造函数,也称之为 :类型转换构造函数。

//类型转换构造函数:
//只有一个参数的构造函数,
//且参数不是自己的const 引用的构造函数,也称之为 :类型转换构造函数。class Teacher88 {
public:Teacher88() {cout << "Teacher88 consturct using" << endl;}//Teacher88也叫做 类型转换构造 函数Teacher88(int age):m_age(age) {cout << "Teacher88 int consturct using" << endl;}void printf() {cout << "m_age = " << this->m_age << endl;}Teacher88(Teacher88 & obj) {this->m_age = obj.m_age;cout << "Teacher88 copy consturct using" << endl;}
private:int m_age;
};void main(){Teacher88 t1; //正常构造一个Teacher88,命名为t1t1.printf();Teacher88 t2(20);//正常构造一个Teacher88,命名为t2t2.printf();Teacher88 t3 = 80;//类型转换构造函数调用 。实际上 这里存在隐式的类型转换,只是会调用 copy 构造函数t3.printf();
}

类型转换函数

1. const 是可选项,表示不应该改变待 转换 对象的内容


2. type 表示要转换成的某种类型  --这里对应double


3. 没有参数传递,没有返回类型


4.但是确能返回一个type类型的值


5.必须定义为类的成员函数

6 static_cast也是会调用 operator double()

//类型转换构造函数:
//只有一个参数的构造函数,
//且参数不是自己的const 引用的构造函数,也称之为 :类型转换构造函数。class Teacher88 {
public:Teacher88() {cout << "Teacher88 consturct using" << endl;}//Teacher88也叫做 类型转换构造 函数Teacher88(int age):m_age(age) {cout << "Teacher88 int consturct using" << endl;}void printf() {cout << "m_age = " << this->m_age << endl;}Teacher88(Teacher88 & obj) {this->m_age = obj.m_age;cout << "Teacher88 copy consturct using" << endl;}//类型转换函数//1. const 是可选项,表示不应该改变待 转换 对象的内容//2. type 表示要转换成的某种类型  --这里对应double//3. 没有参数传递,没有返回类型//4.但是确能返回一个type类型的值//5.必须定义为类的成员函数operator double() const {return m_score;}void setScore(double score) {this->m_score = score;}
private:int m_age;double m_score;
};void main(){Teacher88 t3 = 80;//类型转换构造函数调用 。实际上 这里存在隐式的类型转换,只是会调用 copy 构造函数t3.printf();//类型转换函数调用t3.setScore(99.8);cout << t3 + 9 << endl;//结果为:108.8 。隐式调用 cout << t3.operator double() + 10 << endl; //结果为 109.8 显示调用static_cast<double>(t3); // static_cast也是会调用 operator double()cout << "duandian" << endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599397.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.C++的编译:命令行、makefile和CMake

1. 命令行编译 命令行编译是指直接在命令行中输入以下指令&#xff1a; 预处理&#xff1a;gcc -E main.c -o main.i 编译&#xff1a;gcc -S main.i -o main.s 汇编&#xff1a;gcc -c main.s -o main.o 链接&#xff1a;gcc main.o -o main 命令汇总&#xff1a;gcc main.c …

JVM篇:直接内存

直接内存 直接内存并不是JVM的内存结构&#xff0c;直接内存是操作系统的内存&#xff0c;Java本身并不能对操作系统的内存进行操作&#xff0c;而是通过调用本地方法。直接内存常用于NIO作为缓冲区存在&#xff0c;分配成本较高但是读写性能好&#xff0c;并且不受JVM内存回收…

FingerprintService启动-Android13

FingerprintService启动-Android13 1、指纹服务启动1.1 rc启动Binder对接指纹厂商TA库1.2 FingerprintService启动1.2.1 SystemServer启动FingerprintService1.2.2 注册Binder服务fingerprint 2、获取底层信息2.1 AIDL 对接TA中获取2.2 指纹类型判断 android13-release 1、指纹…

PyTorch基础操作

一、Tensor 在 PyTorch 中&#xff0c;张量&#xff08;Tensor&#xff09;是一个核心概念&#xff0c;它是一个用于存储和操作数据的多维数组&#xff0c;类似于 NumPy 的 ndarray&#xff0c;但与此同时&#xff0c;它也支持 GPU 加速&#xff0c;这使得在大规模数据上进行科…

CSS 放大翻转动画

<template><div class="container" @mouseenter="startAnimation" @mouseleave="stopAnimation"><!-- 旋方块 --><div class="box" :class="{ rotate-scale-up-hor: isAnimating }"><!-- 元素内…

F# 中更安全的递归

作者&#xff1a;David Schaefer 排版&#xff1a;Alan Wang 这是 David Schaefer 的客座博客文章。David 是一名专注于函数式编程的自由软件开发人员。他是 G-Research 开源团队的一员。他致力于改进 F# 开发者工具的生态系统。此外&#xff0c;他还帮助维护各种开源的 F# 项目…

使用爬虫爬取热门电影

文章目录 网站存储视频的原理M3U8文件解读网站分析代码实现 网站存储视频的原理 首先我们来了解一下网站存储视频的原理。 一般情况下&#xff0c;一个网页里想要显示出一个视频资源&#xff0c;必须有一个<video>标签&#xff0c; <video src"xxx.mp4"&…

【Python_PyQtGraph 学习笔记(九)】基于PlotWidget实现plot对象的坐标点添加标签

基于PlotWidget实现plot对象的坐标点添加标签 前言正文1、f_plotAddMark(self, xLst, yLst) 方法1、方法传参介绍2、方法内参数介绍2、方法调用3、案例完整代码4、实现效果前言 本文介绍如何在 PlotWidget 的 plot 对象坐标点上添加标签,也可以说是在 PlotWidget 上添加点的标…

Note: A Journey Across Canada

A Journey Across Canada 一场横穿加拿大的旅行 across journey After a quiz last autumn, Kuang crossed the continent eastward to Toronto to visit his schoolmate, the distance measuring approximately 5000 kilometers. 去年秋天一次考试后&#xff0c;Kuang向东穿…

数字人克隆系统开发公司?

广州硅基技术开发限公司是一家位于中国广东省广州市的科技公司。该公司专注于人工智能&#xff08;AI&#xff09;领域的研发和创新。广州硅基以技术创新和解决方案为核心&#xff0c;致力于为客户提供高质量的人工智能产品和服务。 广州硅基技术的主要业务包括但不限于&#…

Java中的序列化和反序列化:深入理解和实战

文章目录 1. 简介2. Java中的序列化3. Java中的反序列化4. Java序列化中的常见问题和解决策略5. 自定义序列化6. 常见问题及解答7. 使用场景8. 结尾 1. 简介 序列化和反序列化的本质是解决在进行远程通信和持久化数据时&#xff0c;如何保存和恢复数据的问题。 ** 序列化&…

stm32学习笔记:TIIM-输入捕获

输入捕获理论 4个输入捕获和输出比较通道&#xff0c;共用4个CCR寄存器 另外它们的CH1到CH4&#xff0c;4个通道的引脚&#xff0c;也是共用的。 所以对于同一个定时器&#xff0c;输入捕获和输出比较只能使用其中一个&#xff0c;不能同时使用。 电平跳变&#xff1a;上升沿…

《动手学深度学习》学习笔记 第5章 深度学习计算

本系列为《动手学深度学习》学习笔记 书籍链接&#xff1a;动手学深度学习 笔记是从第四章开始&#xff0c;前面三章为基础知道&#xff0c;有需要的可以自己去看看 关于本系列笔记&#xff1a; 书里为了让读者更好的理解&#xff0c;有大篇幅的描述性的文字&#xff0c;内容很…

Spring学习 Spring概述

1.1.Spring介绍 ​ Spring是轻量级Java EE应用开源框架&#xff08;官网&#xff1a; http://spring.io/ &#xff09;&#xff0c;它由Rod Johnson创为了解决企业级编程开发的复杂性而创建 1.2.简化应用开发体现在哪些方面&#xff1f; IOC 解决传统Web开发中硬编码所造成的…

python中collections.abc.Mapping 和collections.Mapping的区别

文章目录 在 Python 中&#xff0c;collections.abc.Mapping 和 collections.Mapping 都是用于表示映射类型&#xff08;即键值对的集合&#xff0c;例如字典&#xff09;的抽象基类。它们的区别在于它们的来源和使用方式。 collections.abc.Mapping 是 collections.abc 模块中…

1月5日代码随想录完全二叉树的节点个数

222.完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在…

使用ModelScope运行或者微调模型ModelScope国内一个“模型即服务”(MaaS)平台

TOC 一、ModelScope社区 ModelScope是一个“模型即服务”(MaaS)平台&#xff0c;由阿里推出维护&#xff0c;旨在汇集来自AI社区的最先进的机器学习模型&#xff0c;并简化在实际应用中使用AI模型的流程。ModelScope库使开发人员能够通过丰富的API设计执行推理、训练和评估&a…

即时设计:轻松实现设计稿动画,打造独具魅力的GIF作品

制作动画 随着动画设计越来越受欢迎&#xff0c;设计师们需要一款强大的工具&#xff0c;以便轻松控制设计稿元素的属性&#xff0c;实现动画效果。今天&#xff0c;我们向您推荐一款具备帧动画功能的设计工具&#xff0c;它可以让您轻松调整元素的宽高、相对位置等属性&#x…

Spring AI 指南

近年来&#xff0c;人工智能技术的迅猛发展改变了我们对科技的看法&#xff0c;并在各个领域引发了巨大的变革。每个人都希望在自己的项目上能够使用人工智能。Spring 框架提供了一个名为 “Spring AI” 的项目&#xff0c;Spring AI 项目旨在简化包含人工智能功能的应用程序的…

Python 基础面试第四弹

1. Python中常用的库有哪些&#xff0c;作用分别是什么 requests: requests 是一个用于发送 HTTP 请求的库&#xff0c;它提供了简单而优雅的 API&#xff0c;可以轻松地发送 GET、POST、PUT、DELETE 等请求&#xff0c;并处理响应数据。它支持会话管理、身份验证、文件上传等常…