关闭

C++设计的一个小缺陷——不必强制类普通成员函数在类体中声明

2069人阅读 评论(12) 收藏 举报
C++设计的一个缺陷,是否应该提交给C++标准委员会呢?——不必强制类普通成员函数在类体中声明
类普通成员函数非得在类中声明了才能在外边写成员函数,C++为什么非得设计成这样呢?
1.如果想增加一个函数,那么同样的函数头要写两遍,这违反了信息唯一原则。造成难于维护难于同步等问题。
2.想在库外为库中的类增加成员函数在目前的这种设计下是不可能的。
比如我想为MFC库的CString类增加一个自定义的tostring()函数就做不到。

我想应该这样设计,类普通成员函数可以直接在外部定义,而不用在类中声明

比如CString类:
直接在我的程序中写

mylib.cpp:

LPTSTR CString::tostring()
{
return (LPTSTR)(LPCTSTR)*this;
}

这样就可以为MFC库中的CString类增加一个tostring成员函数。

--------------------------
usemylib.cpp
...
{
.....
LPTSTR CString::tostring();//用前只要声明一下就可以了,当然可以在一个头文件中集中声明。
str=cstr.tostring();
...
}

这个问题俺闷在心里已经近10年了。
当然,象虚函数这种东西还是必须在类体中声明的。


不过我想这个问题BS应该早就考虑到了,他是基于什么原因采用的现在的这种方案呢? 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:135670次
    • 积分:2363
    • 等级:
    • 排名:第16283名
    • 原创:46篇
    • 转载:29篇
    • 译文:0篇
    • 评论:515条
    最新评论