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类型以及任何自定义类型都可以使用堆栈语义来声明。
C++/CLI中的const literal initonly 友元(转)的更多相关文章
- C++中的const
一,C++中const的基本知识 1.C++中const的基本概念 1.const是定义常量的关键字,表示只读,不可以修改. 2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只 ...
- InfluxDB Cli中查询结果中time格式显示设置
InfluxDB Cli中,time默认显示为19位时间戳格式,平时查询起来特不方便,那么,如何设置成为我们人类能看懂的时间格式呢? 方法有二: 1.$ influx -precision rfc33 ...
- C++中的const关键字
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...
- C++中关于const的思考
在学习C++的过程中,经常被什么时候使用const.为什么使用const以及怎么使用const关键字这样的问题所困扰,以下是我对const的使用总结. 1.值替代 使用#define的确单缺点,第一: ...
- C与C++中的const
同样,有下面一段代码: #include <iostream> using namespace std; int main() { ; int *j = (int *) &i; * ...
- C++中加const与不加const的区别
“常量”与“只读变量”的区别. 常量肯定是只读的,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它. “只读变量”则是在内存中 ...
- C++笔记019:C++中的const修饰的是一个真正的常量
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 程序一: 我们知道数组的下标不能为变量,必须是一个确定的值.在C语言中看程序: #define a 10 int main() { //第 ...
- C++中的const总结
CONST 一.符号常量 声明: const 类型说明符 常量名 = 常量值: const float PI = 3.1415927; //可以交换const与float的位置 符号常量在声明时一定要 ...
- 使用Browser请求 和 在cli中运行程序的分析
在browser中请求后端的一个程序之后,立马将窗口关闭,服务器端的程序是否会挂起或者终止,还是继续执行? 如果是继续执行,那么执行完毕后,结果去了哪里?-->apache的工作流程 使用Bro ...
随机推荐
- jquery - min.js /jquery-1.8.3.min.js引入后报错
解决方法:在“jquery-1.8.3.min.js”文件上,点击鼠标右键,在弹出菜单中选择“myeclipse”->"exclude From Validation",错误 ...
- How to solve multi-version conflict of OpenCV or PCL on ROS kinetic?
Solve multi-version conflict prepare: make sure you know which version is in your machine: dpk-confi ...
- 【Linux】-Ubuntu常用命令吐血整理
前言 刚刚接触Linux操作系统,真的是各种艰难啊,用个什么东西都得从头开始配置,这个时候才明白从头再来是什么滋味了.自己装了数个数十几次的Centos版本的Linux系统,好不容易争气了一次,跑了起 ...
- 【bzoj3209】: 花神的数论题 数论-DP
[bzoj3209]: 花神的数论题 首先二进制数中1的个数最多就是64个 设所有<=n的数里二进制中1的个数为i的有a[i]个 那么答案就是 然后快速幂 求a[i]可以用DP 设在二进制中从 ...
- [51nod1190]最小公倍数之和V2(莫比乌斯反演)
题解 传送门 题解 我是真的不明白这玩意儿是怎么跟反演扯上关系的-- 首先 \[ \begin{align} ans &=b\sum_{d|b}{1\over d}\sum_{i=a}^{b} ...
- webpack 的使用教程
webpack 的使用教程 今天接触webpack,就着官网上的教程一步一步的玩,把自己的理解总结以便和大家交流 webpack的主要特点 1. 可以把js,css,image,甚至文本当成模块来处理 ...
- linux页表机制
每个进程都拥有一个自己的页表,在linux中,有一个页目录数组,这是分页机制的最高层,每个进程的页表对应其中的一个页目录项,通过cr3寄存器可以访问. 一个进程的页表,对应的页表项中对应页的物理地址. ...
- 2017ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
Little Boxes Problem Description Little boxes on the hillside.Little boxes made of ticky-tacky.Littl ...
- springcloud系列11 整合微服务网关zuul
这个模块是一个独立的模块所以需要建立一个模块, 首先引入: 依赖pom.xml <?xml version="1.0" encoding="UTF-8"? ...
- Unity 关节
引言 关节组件一共分为5大类,它们分别是链条关节.固定关节.弹簧关节.角色关节和可配置关节. 链条关节(Hinge Joint):将两个物体以链条的形式绑在一起,当力量过大超过链条的固定力矩时,两个物 ...