C++自动类型转化--特殊构造函数方法和重载的运算符方法
一、重载运算符法
#include <stdio.h> #include <iostream>class Three {int i; public:Three(int ii = 0, int = 0) : i(ii) {std::cout << "you call Three()" << std::endl;} };class Four {int x; public:Four(int xx) : x(xx) {}operator Three() const { return Three(x);} };void g(Three) {} int main() {Four four(1);g(four);g(1);//calls Three(1,0)int n;std::cin >> n; }//输出两次:
you call Three()
2.构造函数转换
//这个构造函数能够把另一类型的对象(引用)作为它的单个参数,那么构造函数允许编译器执行自动类型转换;#include <stdio.h> #include <iostream>class One { public:One() {} };class Two { public:Two(const One&) {std::cout << "you call Two()" << std::endl;} };void f(Two) {}int main() {One one;f(one);//wants a Two ,has a one //输出:"you call Two()”
int i;std::cin >> i; }注意:以上方法调用了Two的隐藏的构造函数,如果关心调用效率的话不要这样使用!
3.阻止构造函数被隐式调用,要求必须显示调用:
//使用关键词explicit时,必须显示调用,完成类型转换#include <stdio.h> #include <iostream>using namespace std;class One { public:One() { } };class Two { public:explicit Two(const One&) {} };void f(Two) {}int main() {One one;//!f(one);//NO auto conversion allowed f(Two(one));//int i;//cin >> i; }
转载于:https://www.cnblogs.com/hujianglang/p/7255746.html
C++自动类型转化--特殊构造函数方法和重载的运算符方法相关推荐
- java赋值运算的类型转换出新的问题_Java中byte、short、char、int、long运算时自动类型转化问题...
-------------------------------------------------------------------------------------------------- ★ ...
- c语言自动转化,C语言编程之自动类型转化
咱们在写程序的时候经常会遇到一些不好找的bug,有的并不是很难,只是大家容易忽略,今天咱们就来看一个,关于C语言自动类型转换的bug. 先看一段代码: void getNext(int * next, ...
- c语言编程车,C语言编程之自动类型转化
咱们在写程序的时候经常会遇到一些不好找的bug,有的并不是很难,只是大家容易忽略,今天咱们就来看一个,关于C语言自动类型转换的bug. 先看一段代码: void getNext(int * next, ...
- python方法与重载_python特殊方法和运算符重载(番外--重载)
python的运算符实际上是通过对象的特殊方法实现的 [例如] a=20 b=30 c=a+b d=a.__add__(b) print("c=",c) print("d ...
- java 方法名相同_Java的方法的重载 :方法名相同,参数类型不同 - Break易站
人类设计语言时,相同的词汇可以表达多种意思.而在Java里面,方法也被设计成这个模式,而区分这些相同方法名的就是方法的参数. Java的方法的重载的特点 方法的重载有下面的特点: 1. 方法名相同,参 ...
- 方法的重载(java)
[1]什么是方法的重载: 方法的重载是在一个类中可以定义多个方法名相同,但参数不同的方法.调用时,会根据不同参数自动匹配对应的方法. 本质:重载的方法,实际是完全不同的方法,仅仅是名称相同. [2]构 ...
- php 魔术方法__get,php常用魔术方法
1.构造函数__construct()和析构函数__desctruct()分别在对象创建和销毁时被调用.对象被"销毁"是指不存在任何对该对象的引用,比如引用该对象的变量被删除(un ...
- Java面向对象(3.1)--方法的重载,可变个数的形参,值传递机制,递归
重载 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数 类型不同即可. 与返回值类型无关,只看参数列表,且参数列表必须不同.(参数个数或参数类 型或者多个参数时参数类型顺序).调用 ...
- java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归
何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 System.out.println();/ ...
- OOP面向对象编程(一)-------方法的重载
面向对象之重载:* 方法的重载(overload)* 1.方法在同一个类中* 2.方法名需要相同* 3.方法的参数列表不同----参数个数不同/参数个数相同,但是参数类型不同* 补充:方法的重载与方法 ...
最新文章
- AAC_LC用LATM封装header信息解析 Audio Specific Config格式分析
- excel中对比两个sheet,找出匹配不上的
- 小学计算机国培研修总结,小学数学国培研修总结
- 【黑马程序员】————预处理指令1-宏定义
- CentOS 7 常用命令大全
- Android系统(245)---SystemServer进程的创建流程
- golang | 使用goroutine和channel实现一个计算int64随机数各位数和的程序。
- “小心!有人在偷看你手机!”谷歌搞了个被偷窥提醒算法
- 软件测试面试题!收藏起来,每天看一看,月薪20K!
- HDU2042 不容易系列之二【递推】
- 解决:java.sql.SQLException: The server time zone value xxxxx is unrecognized or represents more tha
- DNS服务器存在问题需要修复,dns服务(dns异常怎么都修复不了)
- 找规律填数字(c++基础)
- TimX_Ch1与TimX_Ch1N的差异
- 微型计算机使用的crt信号,《微型计算机及其接口技术》课程学习方法篇(2)...
- 怎么做精准引流?如何精准引流加粉?怎样引流被加精准粉?
- Unable to add window——token android.os.BinderProxy@196e65b8 is not valid;is your activit is running?
- 最新JDK1.8(JAVA8)an‘zhuang
- MotoSim EG-VRC软件:机器人系统创建与模型布局操作
- python修改电脑名称_windows更改计算机名称
热门文章
- How do I filtered TextBox with an Integer Data Type
- 实际应用中installshield的事件处理
- Element-ui中table使用row-class-name无效的锅
- 防止监听scroll 事件影响页面性能
- SqlServer还原数据库出现“无法在服务器上访问指定的路径或文件”提示的解决办法
- WebStorm介绍
- protobuffer中string和bytes类型
- python 自动抢红包_用二十行代码实现微信自动抢红包
- 232接口针脚定义_VGA接口定义,详细图文资料
- php制作调查问卷,用PHP制作饼图调查表