一、重载运算符法

#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++自动类型转化--特殊构造函数方法和重载的运算符方法相关推荐

  1. java赋值运算的类型转换出新的问题_Java中byte、short、char、int、long运算时自动类型转化问题...

    -------------------------------------------------------------------------------------------------- ★ ...

  2. c语言自动转化,C语言编程之自动类型转化

    咱们在写程序的时候经常会遇到一些不好找的bug,有的并不是很难,只是大家容易忽略,今天咱们就来看一个,关于C语言自动类型转换的bug. 先看一段代码: void getNext(int * next, ...

  3. c语言编程车,C语言编程之自动类型转化

    咱们在写程序的时候经常会遇到一些不好找的bug,有的并不是很难,只是大家容易忽略,今天咱们就来看一个,关于C语言自动类型转换的bug. 先看一段代码: void getNext(int * next, ...

  4. python方法与重载_python特殊方法和运算符重载(番外--重载)

    python的运算符实际上是通过对象的特殊方法实现的 [例如] a=20 b=30 c=a+b d=a.__add__(b) print("c=",c) print("d ...

  5. java 方法名相同_Java的方法的重载 :方法名相同,参数类型不同 - Break易站

    人类设计语言时,相同的词汇可以表达多种意思.而在Java里面,方法也被设计成这个模式,而区分这些相同方法名的就是方法的参数. Java的方法的重载的特点 方法的重载有下面的特点: 1. 方法名相同,参 ...

  6. 方法的重载(java)

    [1]什么是方法的重载: 方法的重载是在一个类中可以定义多个方法名相同,但参数不同的方法.调用时,会根据不同参数自动匹配对应的方法. 本质:重载的方法,实际是完全不同的方法,仅仅是名称相同. [2]构 ...

  7. php 魔术方法__get,php常用魔术方法

    1.构造函数__construct()和析构函数__desctruct()分别在对象创建和销毁时被调用.对象被"销毁"是指不存在任何对该对象的引用,比如引用该对象的变量被删除(un ...

  8. Java面向对象(3.1)--方法的重载,可变个数的形参,值传递机制,递归

    重载 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数 类型不同即可. 与返回值类型无关,只看参数列表,且参数列表必须不同.(参数个数或参数类 型或者多个参数时参数类型顺序).调用 ...

  9. java 方法重载调用_Java方法的定义以及调用、方法重载、可变参数以及递归

    何谓方法 Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 System.out.println();/ ...

  10. OOP面向对象编程(一)-------方法的重载

    面向对象之重载:* 方法的重载(overload)* 1.方法在同一个类中* 2.方法名需要相同* 3.方法的参数列表不同----参数个数不同/参数个数相同,但是参数类型不同* 补充:方法的重载与方法 ...

最新文章

  1. AAC_LC用LATM封装header信息解析 Audio Specific Config格式分析
  2. excel中对比两个sheet,找出匹配不上的
  3. 小学计算机国培研修总结,小学数学国培研修总结
  4. 【黑马程序员】————预处理指令1-宏定义
  5. CentOS 7 常用命令大全
  6. Android系统(245)---SystemServer进程的创建流程
  7. golang | 使用goroutine和channel实现一个计算int64随机数各位数和的程序。
  8. “小心!有人在偷看你手机!”谷歌搞了个被偷窥提醒算法
  9. 软件测试面试题!收藏起来,每天看一看,月薪20K!
  10. HDU2042 不容易系列之二【递推】
  11. 解决:java.sql.SQLException: The server time zone value xxxxx is unrecognized or represents more tha
  12. DNS服务器存在问题需要修复,dns服务(dns异常怎么都修复不了)
  13. 找规律填数字(c++基础)
  14. TimX_Ch1与TimX_Ch1N的差异
  15. 微型计算机使用的crt信号,《微型计算机及其接口技术》课程学习方法篇(2)...
  16. 怎么做精准引流?如何精准引流加粉?怎样引流被加精准粉?
  17. Unable to add window——token android.os.BinderProxy@196e65b8 is not valid;is your activit is running?
  18. 最新JDK1.8(JAVA8)an‘zhuang
  19. MotoSim EG-VRC软件:机器人系统创建与模型布局操作
  20. python修改电脑名称_windows更改计算机名称

热门文章

  1. How do I filtered TextBox with an Integer Data Type
  2. 实际应用中installshield的事件处理
  3. Element-ui中table使用row-class-name无效的锅
  4. 防止监听scroll 事件影响页面性能
  5. SqlServer还原数据库出现“无法在服务器上访问指定的路径或文件”提示的解决办法
  6. WebStorm介绍
  7. protobuffer中string和bytes类型
  8. python 自动抢红包_用二十行代码实现微信自动抢红包
  9. 232接口针脚定义_VGA接口定义,详细图文资料
  10. php制作调查问卷,用PHP制作饼图调查表