语法差别

 不喜勿喷------java


  1. 定义静态方法c++

1.c++:安全

头文件 static FileUtils* getInstance();函数

cpp文件 FileUtils* FileUtils::getInstance() { return s_sharedFileUtils; }lua

2.javaspa

java文件 public static FileUtils getInstance() {return s_sharedFileUtils;}code

3.luaorm

lua 沒有静态方法这一说法。函数也是一个值。对象

tb.print和tb:print的含义略微不一样,:调用函数会多传递进去一个self进去,差很少至关于OOP里面的成员函数调用.可是和OOP里面成员函数/非成员函数不一样的是,lua里面的非成员函数.调用,他不是静态的.tb对象有一个print function成员,当tb是nil的时候,你不能调用print成员的...在OOP里面,没有这么一回事,非成员函数是全局的.继承

定义表 tb = {} 定义函数 function tb.print() print("") end

4.object-c

头文件 + (FileUtils*) getInstance;

.m文件 + (FileUtils*) getInstance { return instance; }



2.宏定义

1.c++:

头文件 #define CC_PLATFORM_IOS 1

2.java

java没有这个说法,能够用final static int代替,但要在某个class或者interface里面;

public interface Constants { public final static int CC_PLATFORM_IOS = 1; }

3.lua

lua 没有这个说法,用全局变量代替 CC_PLATFORM_IOS 1

4.object-c

头文件 #define CC_PLATFORM_IOS 1


3. 全局方法

1.c++:(与c相似)

头文件 void f1();

cpp文件 void f1() { cout << "f1" << endl; }

当使用的地方也有f1方法时,编译会报重定义错误;

2.java

java没有这个说法,都必须放到class中,便是类静态方法;

java文件 public class C1 { public static void f1() { Log.d("TAG","f1"); } }

3.lua:第一类值,主要对table的操做

lua文件 function f1() print('f1') end

当使用的地方也有f1方法时,前者会被后者覆盖;

4.object-c:object-c包含c,因此用c实现

头文件 void f1();

.m文件 void f1() { NSLog(@"f1"); }

当使用的地方也有f1方法时,编译会报重定义错误;


3. 模板

java模板没看到支持 T add(T a, T b)方法的。有 boolean add(T object)方法;即模板主要是用在容器上面;

1.c++:(与c相似),模板定义与实现最好不要分开,否则常常说找不到定义,因此通常都一块儿定义在.h,.hpp文件中。

.h 或者 .hpp 文件

类模板

template<class T> class A{
public:
    A();
    T add(T a, T b) {
        return a + b;
    }
};

    函数模板

template<class T>
T myAdd(T a, T b) {
    return a + b;
}

2.java

接口模板

public interface List<E> extends Collection<E> {
    public boolean add(E object);
}

类模板

public class Observable<T> { }

3.lua:

4.object-c:

C++里的模板是用来取代C里面的宏的

c模板:宏定义,没有类型检查,c++有,但也不是安全的

#define C_Add(a, b)  a + b

object-c模板:Objective-C 不支持模板;java的接口(interface)和oc的协议(protocol)相似于c++模板方法模式,用继承去实现.

相关文章
相关标签/搜索