zoukankan      html  css  js  c++  java
  • 读书笔记_Effective_C++_条款二十四: 若所有参数皆需类型转换,请为此采用non-member函数

    class A
    {
    private:
        int a;
    public:
        A(int x) :a(x){}
        A operator*(const A& x)
        {
            return A(a*x.a);
        }
    };
    
    int main()
    {
        A a(2);
        A b = a*a;//没有问题
        A b = a * 2;//由于构造函数没有explicit,这里隐式转换了,也没有问题
        A b = 2 * a;//出问题了
    }

    老师讲过,一种是类的member函数,一种是non-member函数,

    但我们为了封装性,尽量不适用friend,我们可以通过修改类的接口来使用数据

    class A
    {
    private:
        int a;
    public:
        A(int x) :a(x){}
        int get_a()const { return a; }
        void display()
        {
            cout << a << endl;
        }
    };
    
    const A operator*(const A& a, const A& b)//注意这里写了const
    {
        return A(a.get_a()*b.get_a());
    }
  • 相关阅读:
    九,WPF资源
    八,WPF 命令
    七,WPF的元素绑定
    六,WPF的Application类
    五,控件
    四,路由事件
    三,依赖项属性
    二,WPF的布局
    一,XAML基础
    压缩解压缩字符串
  • 原文地址:https://www.cnblogs.com/vhyc/p/5598475.html
Copyright © 2011-2022 走看看