当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .