码迷,mamicode.com
首页 > 编程语言 > 详细

读书笔记_Effective_C++_条款二十三:宁以non-member、non-friend替换member函数

时间:2016-06-18 19:58:52      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

有下面一种情况

    class A
    {
    private:
        int a;
        int b;
    public:
        A(int x, int y) :a(x), b(y){}
        void a_display(){ cout << a << endl; }
        void b_display(){ cout << b << endl; }
    };

你想输出全部的时候

member函数情况

void display(){cout<<a<<b<<endl;}

non-member

void display(A& a)
{
    a.a_display();
    a.b_display():
}

根据面向对象编程原则,数据和对象捆绑在一起

可能有违你的认知,应该使用non-member函数的形式

因为member对封装的冲击非常大,它可以直接调用里面的成员变量。暂时看上去它很简单,但不妨碍它以后变得膨胀。

与类内的关联,逻辑上看,这个函数就是类内函数的组合,放在类外会降低类的内聚性。

但书上向我们介绍了namespace的方法

    using namespace std;
    class A
    {
    private:
        int a;
        int b;
    public:
        A(int x, int y) :a(x), b(y){}
        void a_display(){ cout << a << endl; }
        void b_display(){ cout << b << endl; }
    };
    void display( A& a)
    {
        a.a_display();
        a.b_display();
    }

我还是第一次用

语法

    A::A a(1, 3);
    A::display(a);

 

读书笔记_Effective_C++_条款二十三:宁以non-member、non-friend替换member函数

标签:

原文地址:http://www.cnblogs.com/vhyc/p/5596668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!