首页
|
新闻资讯
|
网站运营
|
网络编程
|
数据库
|
服务器
|
网页设计
|
图像媒体
|
网络应用
|
搜索优化
|
资源下载
|
动网主机
|
DVBOX
本站内
互联网
ASP论坛
ASP.Net论坛
PHP论坛
.Net
→ 阅读文章
下一代C++:C++/CLI语言的属性探索
作者
:
来源
:
阅读 862 人次 , 2006-4-25 14:57:00
前言:
本文展示了欧洲计算机开发商协会正在发展的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;
d.Val = 3; // 调用"set"操作函数。
return d.Val; //调用"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更新事件。
收藏本文
打印本文
论坛讨论
关闭窗口
· 上一篇:
Visual C++.NET编程讲座之七
· 下一篇:
Visual C++.NET编程讲座之五
·
用DataList 控制元件开发的一个简单的留言本程序
·
VB.NET面向对象的实现(目录)
·
C#中数据库操作
·
ADO+ 引导数据种类的演变(转自 ms 二)
·
即时消息的发送,包含同时给多人发送信息
关于本站
|
联系我们
|
业务合作
|
客户案例
|
诚聘英才
|
广告合作
|
收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006
Cndw
.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077