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

原创 2007年09月23日 20:24:00
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应该早就考虑到了,他是基于什么原因采用的现在的这种方案呢? 

相关文章推荐

C++第六周任务5:解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: 设...

C++第四周【任务3】设计一个“正整数”类,并通过一系列的成员函数对其性质进行做出判断或列出相关联的数值。

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: ...

c++第四周【任务1】下面设计一个三角形类,请给出各成员函数的定义

* 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:设计一个三角形类         ...

模板类成员函数的定义和声明为什么要放在一个文件中

原文   http://blog.csdn.net/nyist327/article/details/38347049 “通常情况下,你会在.h文件中声明函数和类,而将...

C++在命名空间中声明类和成员函数

C++在命名空间中声明类和成员函数 标签: c++名称空间类 2014-04-14 17:10 1632人阅读 评论(0) 收藏 举报  分类: C++(71)  ...

C++在命名空间中声明类和成员函数

来源:网络 作者:未知 虽然很多程序员都熟悉名字空间的概念,但他们常常都是被动地使用名字空间。也就是说他们使用的是第三方定义的成员(如标准库的类和函数),而不是在名字空间中声明自己的类和函数。本...

c++ 父类成员函数的参数中有子类类型的对象 (前置声明解决)

父类Matrix  子类Image ;显然在子类的头文件Image.h中要包含进父类的的头文件Matrix.h,但在 父类成员函数的参数中有子类类型的对象 时,参数中的Image类型对象提示为未知的类...

类的封装性和信息隐蔽——类声明和成员函数定义的分离

//mytime.h    (这是头文件夹,在此文件夹进行类的定义) #include    using namespace std; class Time  {  public:...

C++类成员函数指针2

  • 2012年11月17日 16:54
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++设计的一个小缺陷——不必强制类普通成员函数在类体中声明
举报原因:
原因补充:

(最多只允许输入30个字)