(类型转换)运算符重载

CA a2 = a1; 时, 会不会进构造函数?

验证了一下, 不会进构造函数, 只会进拷贝构造函数.


(int)a2时,需要重载类型转换运算符, 也验证了一下.


class CA
{
public:
    CA() : m_iTest(1)
    {

    }
    virtual ~CA() {}

    /// 拷贝构造函数
    CA(const CA& src)
    {
        m_iTest = src.m_iTest;
    }

    /// (类型转换)运算符重载
    /// (int)a2
    operator int()
    {
        return m_iTest;
    }

    int m_iTest;
};

void fnTestClass()
{
    CA a1; ///< 进构造函数
    a1.m_iTest = 100;
    CA a2 = a1; ///< 进拷贝构造函数 CA(const CA& src), 不会再进构造函数了

    cout << (int)a2 << endl; ///< 进类型转换运算符重载函数 operator int()
}



你可能感兴趣的:((类型转换)运算符重载)