下一代语言的属性探索

过滤设备2021年09月06日

前言:

本文展示了欧洲计算机开发商协会正在发展的C++/CLI(一种不同的C++语言,它方便开发人员在微软的.NET框架下更容易地开发程序)语言在C++语言上的扩展。写这篇文章的目的并不是要建议标准C++包括这部分扩展,也不是对C++/CLI的认可,而只是在探讨C++/CLI语言在这一领域的发展方向。

公司不予认可 一、基础知识

C++/CLI中的属性是类似与各种数据成员(有各种操作限制)的可操作实体,但是这种操作往往被转化为调用存取函数(这主要是\"getter\"和\"setter\"函数)。例如:

struct Demo1 {

property int Val { // 一个非常简单的整型、分级属性。

int get() const {

++Demo1::access_count;

return this-value;

}

void set(int v) {

++Demo1::access_count;

this-value = v;

}

}

private:

int value;

static unsigned long access_count;

};

int main() {

Demo1 d;

l = 3; // 调用\"set\"操作函数。

return l; //调用\"get\"函数。

}

存取函数的名字必须是get 或者是 set函数,两者之中的任何一个都可以被省略,但绝不能两者全省略。省略一个存取函数导致只存在一个读属性或只存在一个写属性。属性的地址是无法获取的,然而,存取函数作 为成员函数理所当然地可以被用来产生指向成员的指针常量(例如:Demo1::Val::set)。

属性可以使用关键字\"virtual\"进行声明,这意味者存取操作函数是虚函数,纯虚属性函数也是可能存在的,例如:

struct VirtualProp {

virtual property int Val = 0 {

int get() const; // 纯虚函数.

virtual void set(int v); //纯虚函数,这里关键词\"virtual\"是多余的。

}

// ...

};

上述例子显示了通常情况下遇到的一些简单的、非静态的、分层次的属性实例。C++/CLI文档包含了大量的概念变化,下文将进行解释。

二、动机

在标准C++的上下文中,属性约定成俗地使用\"get和set函数\"文法,这种文法将暴露的数据和谐地转换为封闭地状态信息。在更精细的实时框架上下文中(具体的说是微软的.NET框架),属性是可以通过映射实时发觉和修改的元素。例如,现代的GUI库将它的组件参数声明为属性,可视化的界面构筑工具装载这些库,使用装载各种组件的属性列表并将结果展现到用户面前,当用户修改了一个属性,存取操作函数将被调用,例如这将触发各种GUI更新事件。

乌鲁木齐治疗盆腔炎哪家好
沈阳治白癜风医院哪好
清远治疗白癫风医院
相关阅读
袁泉女儿正面照曝光,深眼窝似妈妈翻版,才9岁就是高冷气质缪斯

袁泉是影视圈少有的备受瞩目,出有道多年之前零绯闻,几位时候凭借《小鱼...

2024-11-03
7翌年2日,不见不散!

念过物新时代,喜迎二十大 一年一度的自愿性念过物盛会 刚开启 7月末2日至...

2024-03-30
吹拉弹颂唱响曲(二)——观赏《往日国乐》两年情思小结

原文 / 米木桥 吹拉枪弹诗天天向上歌 —游玩《日星西乐》两年情思小结 20...

2024-03-02
把女朋友当女儿养的男生也比较聪明 女孩子本来就是你越宠爱 她越可爱的 你给她足够的安全感和保护 她也

把女朋友当女儿饲的男生也非常聪明 女孩子本来就是你越好宠爱 她越好可爱...

2024-02-04
最高检:1至3月批捕各类犯罪案件嫌疑人14.3万人,其中未成年4269人

图片来源:视觉里面国 2022年4年末19日,最极高人民检察院发布2022年1至3年末...

2024-02-03
美股短线赛艇 三大股指悉数转跌

美股短线跳水 三大报价才将转跌落 【美股短线跳水 三大报价才将转跌落】...

2024-01-23
友情链接