隐式的类类型转换

如果构造函数只接受一个实参,则它实际上定义了转换为此类类型的隐式转换机制。将这种构造函数称为转换构造函数。

  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #include<iostream>
  4. usingnamespace std;
  5. classClassTest
  6. {
  7. public:
  8. ClassTest()
  9. {
  10. cout <<"ClassTest()"<<endl;
  11. }
  12. ClassTest(int i)
  13. {
  14. cout <<"ClassTest(int)"<<endl;
  15. value = i;
  16. value2 =2;
  17. }
  18. ClassTest(int i,int j): value(i), value2(j)
  19. {
  20. cout <<"ClassTest(int, int)"<<endl;
  21. }
  22. ClassTest(constClassTest& test)
  23. {
  24. cout <<"ClassTest(const ClassTest&)"<< endl;
  25. value = test.value;
  26. value2 = test.value2;
  27. }
  28. void getValue(int&,int&);
  29. private:
  30. int value =0;
  31. int value2 =0;
  32. };
  33. #endif// MAIN_H_INCLUDED
  1. #include"main.h"
  2. voidClassTest::getValue(int&iValue,int&iValue2)
  3. {
  4. iValue = value;
  5. iValue2 = value2;
  6. }
  7. int main()
  8. {
  9. ClassTest classTest =2;
  10. /**
  11. * 还可以使用以下几种实现方法
  12. * ClassTest classTest(2);
  13. * ClassTest classTest = ClassTest(2);
  14. * ClassTest classTest = (ClassTest)2;
  15. */
  16. int value =0;
  17. int value2 =0;
  18. classTest.getValue(value, value2);
  19. cout <<"value = "<< value <<"\nvalue2 = "<< value2 << endl;
  20. return0;
  21. }
  • 只允许一步类类型转换
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #include<iostream>
  4. usingnamespace std;
  5. classClassTest
  6. {
  7. public:
  8. ClassTest()
  9. {
  10. cout <<"ClassTest()"<<endl;
  11. }
  12. ClassTest(string str)
  13. {
  14. strValue = str;
  15. }
  16. string getValue()
  17. {
  18. return strValue;
  19. }
  20. private:
  21. string strValue;
  22. };
  23. #endif// MAIN_H_INCLUDED
  1. #include"main.h"
  2. int main()
  3. {
  4. ClassTest classTest = string("Hello world!");
  5. //ClassTest classTest = "Hello world!";/*无法实现从char[]先转化为string,在由string转换为类类型*/
  6. cout << classTest.getValue()<< endl;
  7. return0;
  8. }
  • 抑制构造函数定义的隐式转换
  1. #ifndef MAIN_H_INCLUDED
  2. #define MAIN_H_INCLUDED
  3. #include<iostream>
  4. usingnamespace std;
  5. classClassTest
  6. {
  7. public:
  8. ClassTest()
  9. {
  10. cout <<"ClassTest()"<< endl;
  11. }
  12. /**
  13. * 如果是在类声明之外进行类成员函数的实现,explicit只加在声明的位置
  14. */
  15. ClassTest(string str)
  16. {
  17. strValue = str;
  18. }
  19. string getValue()
  20. {
  21. return strValue;
  22. }
  23. private:
  24. string strValue;
  25. };
  26. #endif// MAIN_H_INCLUDED
  1. #include"main.h"
  2. int main()
  3. {
  4. //ClassTest classTest = string("Hello world!");/**< 错误 */
  5. ClassTest classTest(string("hello world"));/**< 只能用于直接初始化 */
  6. //ClassTest classTest = "Hello world!";/*无法实现从char[]先转化为string,在由string转换为类类型*/
  7. cout << classTest.getValue()<< endl;
  8. return0;
  9. }



来自为知笔记(Wiz)



转载于:https://www.cnblogs.com/fengkang1008/p/4652252.html

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

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

相关文章

负数的 %求余和取模

1.求余和取模是不同的 2.‘%’ 在C/C&#xff0c;Java等语言中意为 求余 &#xff0c;在python 中意为 取模 3.a%b c 求余: c的符号和a一致 取模&#xff1a;c的符号和b一致 比如&#xff0c;一个小李子&#xff1a; public class Solution{public static void main(String…

PAT-BASIC-1038-统计同成绩学生

本题要求读入N名学生的成绩&#xff0c;将获得某一给定分数的学生人数输出。 输入格式&#xff1a; 输入在第1行给出不超过105的正整数N&#xff0c;即学生总人数。随后1行给出N名学生的百分制整数成绩&#xff0c;中间以空格分隔。最后1行给出要查询的分数个数K&#xff08;不…

JavaScript事件处理的三种方式(转)

一、什么是JavaScript事件&#xff1f;事件(Event)是JavaScript应用跳动的心脏&#xff0c;也是把所有东西粘在一起的胶水&#xff0c;当我们与浏览器中Web页面进行某些类型的交互时&#xff0c;事件就发生了。 事件可能是用户在某些内容上的点击、鼠标经过某个特定元素或按下键…

Erlang与Java内存架构

我读了一篇关于Erlang VM的内存管理策略的非常非常有趣的文章。 它是Jesper Wilhelmsson撰写的论文 &#xff0c;我认为讨论Erlang的内存设置和Oracle的Java VM之间的差异可能会很好。 作为对从未听说过Erlang的人的真正的简短介绍; 它是一种功能语言&#xff0c;使用异步消息传…

Xuggler教程:转码和媒体修改

注意&#xff1a;这是我们的“ Xuggler开发教程 ”系列的一部分。 在之前的教程中&#xff0c;我对视频处理Xuggler进行了简短介绍 。 在这一部分中&#xff0c;我们将看到Xuggler和FFmpeg提供的一些更令人兴奋的功能&#xff0c;例如视频转码和媒体修改。 不要忘记Xuggler是一…

Web工程师必备的43款可视化工具

国外站点DATAVISUALIZATION.CH为大家总结出了当前热用的43款可视化工具&#xff0c;包括Arbor、Chroma.js、D3.js、Google Chart Tools等&#xff0c;绝对让你一饱眼福。 1.Arbor.js Arbor是一个免费的、可视化的图形库&#xff0c;基于矢量创建动态的连接图。它为图形组织和屏…

力扣7. 整数反转

方法一&#xff1a;官方给的&#xff0c;自己懂了后照着敲了一遍 class Solution {public int reverse(int x) {int rev 0;while (x ! 0) {//if判断条件过于复杂&#xff0c;我好不容易看懂了if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {retu…

AndroidManifest.xml中的application中的name属性

被这个不起眼的属性折磨了一天&#xff0c;终于解决了。 由于项目需要&#xff0c;要合并两个android应用&#xff0c;于是拷代码&#xff0c;拷布局文件&#xff0c;拷values&#xff0c;所有的都搞定之后程序还是频频崩溃&#xff0c;一直没有找到原因&#xff0c;学android…

完美单身

我不时遇到一些Java程序员&#xff0c;他们不确定他们应该如何正确实现Singleton模式。 &#xff08;如果您不知道什么是Singleton&#xff0c;请尝试Wikipedia&#xff1a; Singleton模式 &#xff09;。 我并不是在谈论在线程环境中的正确实现。 但是&#xff0c;使用最常见的…

力扣移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 我写的代码思路是从开始元素找0&#xff0c;找到了就将这个0后面的元素向前移一位 class Solution {public void moveZeroes(int[] nums) {int n nums.length;…

Doclava:来自Google的自定义Javadoc Doclet

Doclava是Google的自定义Javadoc Doclet&#xff0c;由Google Guice使用&#xff08;请参阅稍冷的 Javadocs &#xff09;。 Doclava使用JSilver作为其模板引擎&#xff0c;这是Clearsilver的纯Java实现。 我个人喜欢联合文档的想法&#xff0c;它允许文档在打开的项目上相互链…

linux cat显示若干行

【一】从第3000行开始&#xff0c;显示1000行。即显示3000~3999行 cat filename | tail -n 3000 | head -n 1000 【二】显示1000行到3000行 cat filename| head -n 3000 | tail -n 1000 *注意两种方法的顺序 分解&#xff1a; tail -n 1000&#xff1a;显示最后1000行 tail -n …

【Stackoverflow好问题】java在,如何推断阵列Array是否包括指定的值

问题java中&#xff0c;怎样推断数组Array是否包括指定的值精华回答1.Arrays.asList(...).contains(...) 2.使用 Apache Commons Lang包中的ArrayUtils.containsString[] fieldsToInclude { "id", "name", "location" };if ( ArrayUtils.contai…

力扣移除元素

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面…

在域驱动设计中使用状态模式

域驱动设计&#xff08;DDD&#xff09;是一种软件开发方法&#xff0c;其中&#xff0c;通过将实现与核心业务概念的不断发展的模型相连接&#xff0c;可以解决问题的复杂性。 该术语是由Eric Evans创造的&#xff0c;并且有一个DDD专用站点可以促进其使用。 根据其定义&#…

使用selenium进行密码破解(绕过账号密码JS加密)

经常碰到网站&#xff0c;账号密码通过js加密后进行提交。通过burp拦截抓到的账号密码是加密后的&#xff0c;所以无法通过burp instruder进行破解。只能模拟浏览器填写表单并点击登录按钮进行破解。于是想到了自动化web测试工具selenium&#xff0c;代码如下&#xff0c;测试效…

力扣删除排序数组中的重复项

给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 我没注意到“有序”这一条…

POJ1789-Truck History .

题目链接&#xff1a;http://poj.org/problem?id1789 题目的大概意思就是给你n个字符串。每个字符串只有7的长度。然后分别给这些字符串编号。不同编号之间的距离就是他们有多少个不同的字母。&#xff08;同一个位置字母不相同也算&#xff09;然后一个编号只能由另一个派生…

Java Fork / Join进行并行编程

最近几年&#xff0c;计算机处理器领域发生了范式转变。 多年来&#xff0c;处理器制造商一直在提高时钟频率&#xff0c;因此开发人员享受到这样的事实&#xff0c;即他们的单线程软件执行得更快&#xff0c;而无需他们付出任何努力。 现在&#xff0c;处理器制造商青睐多核芯…

arm-elf-gcc交叉编译器的使用教程

arm-elf-gcc交叉编译器的使用教程 一开始需要安装arm-elf-gcc&#xff0c;但是这是一个32位的程序&#xff0c;我是安装了64位的系统&#xff0c;据说安装ia32.libs依赖库能运行这个&#xff0c;但是看到博客上面前人安装完了系统图标少了一半&#xff0c;然后就怕了。经过了翻…