注册 登录
编程论坛 C++教室

宁以non-member和non-friend替换member函数有什么好处?

newyj 发布于 2008-04-26 21:54, 2756 次点击
刚看的Effective C++中的一个
说了一大堆也没看懂个意思   说是可以增加封装性 包裹弹性和机能扩充性
能否讲解一下 谢谢了

[[it] 本帖最后由 newyj 于 2008-4-26 21:56 编辑 [/it]]
20 回复
#2
中学者2008-04-26 23:37
LZ是否写反了??应该是member替换non-member和non-friend把
#3
newyj2008-04-27 10:17
没有写反啊
#4
中学者2008-04-27 11:35
难道non-member和non-friend 函数不存在于全局(除去namespace)?
PS: 条款几??我看下
#5
sunkaidong2008-04-27 11:50
没看过..可以说的明白点吗?什么叫non-number?
#6
newyj2008-04-27 11:52
第三版 第23条款
是non-member  不是成员函数

[[it] 本帖最后由 newyj 于 2008-4-27 11:54 编辑 [/it]]
#7
中学者2008-04-27 11:57
不好意思,我是第二版的,不知道有没有,条款的名称是什么?
#8
newyj2008-04-27 12:01
宁以non-member和non-friend替换member函数
#9
中学者2008-04-27 12:05
第二版没这个条款~
#10
sunkaidong2008-04-27 12:07
不明白,不是友员,不是成员..可以提高封装?对了除去友员除去成员..还有什么?
#11
newyj2008-04-27 12:34
还有全局函数
#12
sunkaidong2008-04-27 12:38
在类里面封装全局函数?控制权限是什么?我看的是c++primer上面没怎么提这些概念...彻底当成面向对象的语言来看的...
#13
newyj2008-04-27 12:42
好象不能在类里面封装全局函数吧
只是说有的时候用全局函数调用public的成员 比 用成员函数好
这就是我不理解的地方
#14
中学者2008-04-27 13:34
看多态//
#15
sunkaidong2008-04-27 13:38
楼上是说..全局函数用一个父类的引用或指针,然后根据虚函数从构实现动态编联?要是说得是这个要好理解点...
#16
sunkaidong2008-04-27 13:45
讨厌概念的东西..最好都是可以有概念然后有例子比较下..要不然光是那些字的意思就够看半天的..呵呵
#17
newyj2008-04-27 13:47
回复 15# 的帖子
是啊
能否举的例子啊
没有看懂 你说的 是什么意思
#18
中学者2008-04-27 14:14
程序代码:

#include<iostream>
using namespace std;
class A{
public :
  virtual ~A() =0{
   cout<<"destroy A"<<endl;
  }
  virtual void dump() const =0;
};
class B:public A{
public:
  ~B() {
   cout<<"destroy B"<<endl;
   }
  void dump() const{
  cout<<"B"<<endl;
  }
};
class C:public A{
public :
  ~C() {
  cout<<"destroy C"<<endl;
   }
  void dump() const{
  cout<<"C"<<endl;
  }
};
void Print(const A* pa)
{
  pa->dump();
}
int main(void)
{
   A* pa = new B;
   Print(pa);
   delete pa;
   return;
}
#19
sunkaidong2008-04-27 14:23
中学,纯虚函数,在基类中一般是不要实现代码的virtual ~A() =0  这里是不是可以不用呢?

[[it] 本帖最后由 sunkaidong 于 2008-4-27 15:02 编辑 [/it]]
#20
中学者2008-04-27 14:33
抽象基类多半是接口,纯虚析构可以没实现呢.......
#21
newyj2008-04-27 16:52
编译的时候把virtual ~A() =0中的=0去掉才能编译 为什么
是不是最后都得调用 析构函数(不是说在构造函数中用到动态的时候才用析构函数的吗?)
我用的是Dev-C++

[[it] 本帖最后由 newyj 于 2008-4-27 16:54 编辑 [/it]]
1