<b>工作中的C++:基本原理,重点举荐和完毕语</b>[VC/C++编程]
本文“<b>工作中的C++:基本原理,重点举荐和完毕语</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
目录
基本原理
丢弃托管扩大
将来的爱好
编程的演变
终纵目标
完毕语,固然不是再见
这个月,我要改变通例的问答情势来奉告您关于我在网上发现的一个非常不错的文档.几个星期前,有人写信询问我,为什么他不能在 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
////////////////////////////////////////////////////////////////
// 要编译范例:
// cl /clr const.cpp
//
#include <stdio.h>
ref class A {
int m_val;
// 答应利用常量数据成员,将生成 modopt
static const int g_private = 1;
public:
// 大众常量成员可由 Visual Basic 或其他不能辨认常量的程序
// 来改正(因而改用字面量).
literal int g_public = 1;
A(int i) { m_val = i; }
void print(); // const; // 不!不答应利用常量 fn
};
void A::print()
{
printf("Val is %dn",m_val);
}
int main()
{
A a(17);
a.print();
}
Modopt(可选的修饰符)是一种对 CLI 利用者宣布的 MSIL 声明符:假如您理解它,很好;假如不理解,可以完好忽视它.相反,modreq(所需的修饰符)表示:假如您不理解它,就不能利用此函数.Volatile 就是 modreq 的一个示例.因为一个 volatile 引用随时都可以被操作系统/硬件(乃至是另一个线程)更改,所以 CLI 利用者最好知道 volatile 的含义,假如想要利用 volatile 对象的话.但 const 是可选的.请注意,固然托管扩大会将 C++ const 对象转化成 CLI 文字量,C++/CLI 不再这么做了.因此要当心 - 假如声明一个大众 const 数据成员,用像 Visual Basic 这样的语言编写的客户端可以改变它的值.假如您但愿 CLI 客户端不能改变该值,就应当声明对象字面量,如在图 1 中所示.但是,成员函数呢 - 为什么 const 成员函数是不答应的?
以上是“<b>工作中的C++:基本原理,重点举荐和完毕语</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |