C++中的property库的设计与实现过程(一)

来源:互联网 发布:科学大数据与数字地球 编辑:程序博客网 时间:2024/06/06 19:57
虽然现在很忙,有很多事情要做,但是脑子里总在想一些稀奇古怪的事情而停不下来。比如说这个property,就是我最近睡觉前想的最多的东西。特别是前几天,不小心被关在实验室没法出去只好在这里睡觉,睡觉前又想到这个property,于是手痒,动手真的把粗糙的想法实现了一遍。

在说如何实现之前,首先应该说说什么是property,以及为什么要做这么一个东西。
property首先应该是Borland C++引入的新的C++关键字,它很方便但是不标准,C++标准化组织也从来没想过把它纳入标准。至今为止,我觉得最爽的property应该属于.Net里面的实现,比如说C#:
public class Sample
{
    
private int x_;

    
public int X
    
{
        
get
        
{
            
return x_;
        }

        
set
       
{
            x_ 
= value;
        }

    }


    
// Something else...
}

很容易发现,如果我愿意把X作为一个int暴露给外部随便改,那么我直接写
    // Treat X as a simple int.
    public int X;
/*
    {
        get
        {
            return x_;
        }
        set
       {
            x_ = value;
        }
    }
*/

就可以把X变成普通成员了。相反亦然。
这样非常的方便,而且也使得设计人员变得更加的自由:因为他不需要担心今后会因为X要变成readonly、或者要检查输入、或者其他什么bt需求而对代码伤筋动骨,简简单单的选择实现get或set就好了,而对于X这个接口,却始终能够保持统一。

正因为property有这些好处而C++没有在语言这一层提供实现方法,property库就显得非常有必要了。不过还是必须看到,既然是实现C++非标准的东西,其代码肯定无法好看,那么这个property库也就只能设计成一个基础程序库的样子,他的用户是其他库的编写者。

OK,接下来,我就会开始讨论最基本的property的实现思路和遇到的第一个问题。<iframe frameborder="0" id="gn_notemagic" style="position: absolute; display: block; opacity: 0.7; z-index: 500; width: 16px; height: 20px; top: 671px; right: 401px;" src="http://www.google.com/gn/static_files/blank.html"></iframe>
原创粉丝点击