C++/CLI语言的属性探索

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

软件 > 开发者网络 > 微软开发专栏 > Visual Studio.net专栏 > VC.net > 正文

本文展示了欧洲计算机开发商协会正在发展的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++/CLI语言的属性探索

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航