Jan 29

(只是个人的感情喜好, 可能不适合某些人, 特别是对 C++ 比较有感情的人.) 我终于知道 Linus 为什么会骂 C++ 是狗屎了, 因为它把简单的东西变得复杂了(当然, 它也把某些复杂的东西变简单了).

#include

class A{
public:
    void fun();
};

void A::fun(){
    printf("fun\n");
}

int main(int argc, char *argv[]){
    A a;
    void (A::*p)() = &A::fun;
    (a.*p)();
    return 0;
}

这是什么狗屎? 如果这样的话, 函数指针还有实用意义吗? — 为了调用类中的一个方法, 你竟然需要知道该方法的名称, 所处的类的名称, 以及它的实例的名称, 而且调用的时候还要加上实例的名称(4 个条件)! 这就是真正的狗屎!

我希望是下面的形式(只需要两个条件: 类实例的名称, 方法的名称):

void (*p)() = a.fun;
p();

是的, C# 做到了, 所以 C# 被人称为语法优美的语言.

Related posts:

  1. Ideawu.P2P API 简介
  2. 编写基于TCP的应用程序
  3. TCP/IP 指数增长和线性增长的编程实现
  4. C#封装log4net
  5. Linus又骂人stupid

Written by ideawu at 2008-01-29 17:25:00 | Views: 3881

Leave a Reply

必须登录, 或者浏览器开启JavaScript支持才可以评论!


网站空间,免费试用