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

虽然现在很忙,有很多事情要做,但是脑子里总在想一些稀奇古怪的事情而停不下来。比如说这个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的实现思路和遇到的第一个问题。

相关阅读

有话想说?请留下评论吧~~如果喜欢我的blog,欢迎订阅~~

评论

还没有任何评论。

留下评论

(必需)

(必需)