一、重载运算符法

#include <stdio.h>
#include <iostream> class Three
{
int i;
public:
Three(int ii = , int = ) : 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();
g(four);
g();//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;
}

C++自动类型转化--特殊构造函数方法和重载的运算符方法的更多相关文章

  1. 040_字符串连接符 041_条件运算符目 042_运算符优先级_逻辑与或优先问题 043_自动类型转化 044_强制类型转换 045_基本类型常见错误_溢出_L问题

    040_字符串连接符 package test_package; /** * 字符串运算符 * @author * */public class TestOperator05 { public sta ...

  2. Java中byte、short、char、int、long运算时自动类型转化问题

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

  3. 重载 CreateParams 方法[2]: 重载 TForm.CreateParams 方法的几个例子

    这里有所有相关参数的解释: http://www.cnblogs.com/del/archive/2008/04/15/1154359.html //最大化窗口 procedure TForm1.Cr ...

  4. C++中的显式类型转化

    类型转化也许大家并不陌生,int i; float j; j = (float)i; i = (int)j; 像这样的显式转化其实很常见,强制类型转换可能会丢失部分数据,所以如果不加(int)做强制转 ...

  5. Spring mvc @initBinder 类型转化器的使用

    一.单日期格式 因为是用注解完完成的后台访问,所以必须在大配置中配置包扫描器: 1.applicactionContext.xml <?xml version="1.0" e ...

  6. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

  7. java方法的重载

    java方法的重载 public class Person1 {    private String name; //姓名    private int age;      //年龄    priva ...

  8. Java方法多态性——方法的重载Overload和重写Override

    方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式. 重写(Override) 重写是 ...

  9. C#类的继承,方法的重载和覆写

    在网易云课堂上看到唐大仕老师讲解的关于类的继承.方法的重载和覆写的一段代码,注释比较详细,在此记下以加深理解. 小总结: 1.类的继承:允许的实例化方式:Student t=new Student() ...

随机推荐

  1. webpack学习笔记--配置output

    Output output  配置如何输出最终想要的代码. output  是一个  object ,里面包含一系列配置项,下面分别介绍它们. filename output.filename  配置 ...

  2. vue生命周期探究(一)

    前言 在使用vue开发的过程中,我们经常会接触到生命周期的问题.那么你知道,一个标准的工程项目中,会有多少个生命周期勾子吗?让我们来一起来盘点一下: 根组件实例:8个 (beforeCreate.cr ...

  3. WINDOWS 2008Server 配置nginx 反向代理服务器 安装成服务

    本案例有用过可行 反向代理就是是网站通过一台机器发布到公网,客户访问的时候是直接访问那台代理机器的,然后通过那台机器才访问到内网网站.   0.先要在域名官网上面配置域名对应的IP地址,然后要在自己路 ...

  4. docker compose启动服务超时重启记录

    一.停docker systemctl stop docker 然后ps -aux grep docker发现有些docker进程还是存在,此时强杀存在的docker进程:ps -aux|grep d ...

  5. HDU2586How far away? LCA

    去博客园看该题解 题意 给出一棵树,以及每条边的权值,给出一些询问,每个询问是2个节点,求每个询问对应的2个节点的距离. 算法 LCA_Tarjan 代码 #include <cstring&g ...

  6. L3-021 神坛 (30 分) 计算几何

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

  7. 归并排序(Java实现)

    package sort; public class MergeSort { static void msort(int []a,int start,int end){ int mid=(start+ ...

  8. datatables数据渲染自定义

    "data": "ip",渲染回调函数中的data['ip']字段将传给render函数中的data:render函数的返回内容将代替"data&qu ...

  9. 不一样的go语言-error

    前言   go语言的error处理方式,在目前流行的编程语言中属于刺头.似乎天生就是用来有别于他人标记.TIOBE排行榜全十除了C语言,无一例外是try catch的阵营.而排在go之前的语言除了C与 ...

  10. java validate date

    public boolean isDateValidDDMMYYYY(String date) { String DATE_FORMAT = "ddMMyyyy"; try { D ...