标题:成员归属权的表示
| 成员归属权的表示的简洁性 | 优劣比较 |
C++ | -1 | 9 |
Java | +1 | 10 |
C# | +1 | 10 |
讨论:
类的成员分成两类:实例成员和静态成员;命名空间的成员只是包含类型成员(C++还包含函数和数据成员)。这里所说的成员归属权就是指得这两类成员的归属权。
1. 由于C++支持引用和指针,分别使用”.”和”->”表示;类的静态成员和命名空间的类型、函数和变量的归属权使用”::”表示。也就是说,归属权在C++中有3种不同的表示法。相对于Java 和C#,这增加了记忆、理解和书写的复杂性,要减少一分。
2. Java对于归属权的表示只是使用”.”表示。
3. C#对于归属权的表示只是使用”.”表示。
实例:
// C++的成员归属权的表示
{
Foo foo;
foo.someFun(); //引用归属权
Foo *p = new Foo();
p->someFun(); //指针归属权
Foo::StaticValue = 0; //类静态成员归属权
std::vector<int> vec; //命名空间归属权
}
// Java的成员归属权的表示
{
Foo foo;
foo.someFun(); //引用归属权
Foo.StaticValue = 0; //类静态成员归属权
java.lang.Vector vector vec = new java.lang.Vector(); //命名空间归属权
}
// C#的成员归属权的表示
{
Foo foo;
foo.someFun(); //引用归属权
Foo.StaticValue = 0; //类静态成员归属权
System.Int32 i = 0; //命名空间归属权
}