C#中扩展方法,C++语言如何实现类似的扩展?
时间:2011-03-08 来源:王祖文 邪恶
今天看了一个C#的程序,是关于扩展方法的代码编写和调用。想了好半天但是还是没能参透其中奥妙。
以我个人目前菜鸟的水平,如果要对一个类添加额外的方法除了在本类中进行加方法以外,另外一个方法就是继承该类,在子类中添加方法。
但在C# 语言里出现了一个新的技术(解决方案)名叫扩展方法。
C#代码如下:
class Program
{
static void Main(string[] args)
{
// 调用扩展方法
Console.WriteLine("123456".MD5Hash());
Console.WriteLine("1".In(new[] { "1", "2", "3" }));
}
}
public static class helper
{
public static string MD5Hash(this string s)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "MD5");
}
public static bool In(this object o, IEnumerable b)
{
foreach (object obj in b)
{
if (obj == o)
return true;
}
return false;
}
}
运行结果:
C#语言居然可以这样子实现,佩服!
我把这个贴出来就是希望高人看到。解答下原因,如果用C++实现类似C#扩展方法一样的功能,那么这样的C++代码该怎样写?