目录
基本原理
抛弃托管扩展
未来的乐趣
编程的演变
终极目标
结束语,尽管不是再见
这个月,我要改变常规的问答形式来告诉您关于我在网上发现的一个非常不错的文档。几个星期前,有人写信询问我,为什么他不能在 C++/CLI 中声明 const 函数:
// 引用类 ref class A { void f() const; // 不! }; |
对此,我回复道:您就是不能,这是规则。公共语言基础结构 (CLI) 是为支持诸如 Visual Basic?、Java 甚至是 COBOL 语言而设计的 - 这些语言甚至不知道 const 的含义。因为 CLI 不知道 const 成员函数为何物,所以您不能使用。
我打完回复后,模糊地记起了一些埋藏在记忆深处的一些东西,关于 const,关于如何处理编译器提示以使其他语言可以忽略这些提示。我查找了以前的专栏,发现曾在 2004 年 7 月回答过一个关于 const 的问题。实际上,C++/CLI 的确允许声明 const 数据成员和参数 - 但不是 const 成员函数。图 1 显示了一个小程序,其具有 const 静态数据成员的引用类。如果编译此程序,然后使用 ILDASM 来反汇编,您将看到类似于下面的信息:
field public static int32 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) g_private = int32(0x00000001) |
Figure1const.cpp