zoukankan      html  css  js  c++  java
  • C++程序设计方法3:自动类型转换

    方法1:在源类中定义目标类型转换运算符

    #include <iostream>
    using namespace std;
    
    class Dst
    {
    public:
        Dst()
        {
            cout << "Dst::Dst()" << endl;
        }
    };
    
    class Src
    {
    public:
        Src()
        {
            cout << "Src::Src()" << endl;
        }
        operator Dst() const
        {
            cout << "Src::operator Dst() called" << endl;
            return Dst();
        }
    };

    方法2:在目标类中定义源类对象作参数的构造函数

    #include <iostream>
    using namespace std;
    
    class Src;//前置声明,因为在Dst中要用到Src类
    class Dst
    {
    public:
        Dst()
        {
            cout << "Dst::Dst()" << endl;
        }
        Dst(const Src& s)
        {
            cout << "Dst::Dst(const Src&)" << endl;
        }
    };
    
    class Src
    {
    public:
        Src()
        {
            cout << "Src::Src()" << endl;
        }
    };

    拷贝:同样类的对象拷贝给同样类的新对象;

    void Func(Dst d) {}
    int main()
    {
        Src s;
        Dst d1(s);//这是直接构造,不是类型转化
    
        Dst d2 = s;//自动类型转换,注意:不要与拷贝构造函数搞混了;拷贝构造时同样类型对象之间的操作;
        Func(s);//自动类型转化
        return 0;
    }

    注意:两种自定义类型转换的方法不能同时使用;

    怕什么真理无穷,进一寸有一寸的欢喜。---胡适
  • 相关阅读:
    数组模拟队列
    数组模拟栈
    数组实现双链表
    别再傻傻地说电脑内存不够用了,望周知!
    电脑内存又不够了?六个方法拯救你的C盘!
    jsp基础语法与指令
    最新的web.xml配置代码
    浅谈Session技术
    浅谈cookie技术
    Javaweb编程之Response下载文件
  • 原文地址:https://www.cnblogs.com/hujianglang/p/6642823.html
Copyright © 2011-2022 走看看