有下面一种情况
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(, );
A::display(a);