C++/CLI中的const literal initonly 友元(转)
C++/CLI中的const literal initonly 友元
Visual C++并不允许在const对象上调用成员函数,除非该成员函数也被声明为const。
C++/CLI托管代码中,无法把任何类型的函数声明为const;但可以把一个对象声明为const;然而由于无法编写const函数,这种const对象也几乎没有办法进行操作。
我们可以在句柄和函数实参中使用const;就像对指针使用const一样当;我们把一个引用传递给一个函数但有希望限制对这个引用所指向的数据进行修改时,这种做法很实用。
托管数组不支持const限定符,即无法在C++/CLI中使用const声明或传递托管数组。
本地C++中的静态常量成员在C++/CLI中应该只使用关键字literal声明。被声明为literal的数据成员必须在声明的时候进行初始化。literal必须是类的数据成员而不能是全局静态变量。
C++/CLI使用inionly把一个成员变量声明为initonly指定了这个成员只能在类的构造函数中被赋值,但并不意味着它不可以被重新赋值,只是他无法在构造函数之外被赋值或重新赋值。
C++/CLI托管类无法声明友元类或友元函数;本地类可以把托管类声明为它的友元。
堆栈语义
当我们在不使用new的情况下创建一个本地对象时,Visual C++把这种对象(自动变量)存储在堆栈而不是本地堆中,堆栈内存是由C++运行时自动管理的。当自动变量离开作用域时,它的析构函数会被隐式的调用,它所占据的内存会被自动收回,不需要程序员显示的调用delete。这种风格的声明称为堆栈语义。
C++/CLI并不允许我们对3种特定的托管类型使用堆栈语义:String对象,托管数组和委托。这些类型的对象必须被定义为各自类型的句柄。任何其它C++/CLI类型以及任何自定义类型都可以使用堆栈语义来声明。
最新文章
- WPF附加属性
- arc下dealloc得处理
- 来自于2016.2.23的flag
- javascript 之注意url特殊字符限制
- 关于Bitcode的探索
- Checking the content of the pointer
- 当WEB站点应用程序池标识为ApplicationPoolIdentity,出现运行错误时的解决方法
- MEF 编程指南(一):在应用中托管 MEF
- ScrollView 尽量避免嵌套RelativeLayout,非常惨痛的教训
- 对于C++中const &; T operator= 的一点思考
- iOS创建本地通知和删除对应的通知,工作日通知
- asp.net控件ControlToValidate同OnClientClick冲突解决办法
- Shell命令-文件压缩解压缩之gzip、zip
- lsmod语法
- Hadoop 尝试
- delphi 获取webbrowser的cookies给Idhttp用
- 部署mariadb高可用
- ajax序列化表单,再也不用通过data去一个个的传值了
- Mockserver -MOCO的使用
- 订阅Linux内核邮件列表
热门文章
- selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出
- CloudStack网络概念
- [Django笔记] 从已有的数据库构建应用
- kylin 连接 hortonworks 中的 hive 遇到的问题
- Flask 程序的基本结构
- P4014 分配问题
- USACO 1.1.2 Greedy Gift Givers(gift1)
- zookeeper客户端使用原生JavaApi操作节点
- [AH2017/HNOI2017]礼物(FFT)
- 最长上升子序列问题(O(n^2)算法)