C++课程学完也已经有几周的时间了,在C++课程里,我实现了一个自己的字符串类MyString,在里面我实现了不少自以为很实用的小功能,例如字符串转浮点数之类,但是我的野心不止于此,我的终极目标是想重载完所有的基础数据结构,让这些基本数据结构变得又稳定,又功能强大。例如,整型可以理论上无限长度,可以进行高精度计算,浮点数也支持超长数字计算,任何数据结构都有一个toString()函数,print()函数可以实时打印出任何数据结构,等等。
实际上,我的愿望不止于此,我希望能够造出一个大统一数据结构:MyVal类,任何数据结构都可以用它来代替,就像JavaScript,python一样,在损失一丢丢的性能的情况下,大幅度简化C++编程,结合自己之前制作的数据结构重构,例如MyInt,MyFloat,MyChar,MyArray,MyString等,最终实现一个超级赞的MyLib库,我觉得这是一个造福人类的事情。。。
后来发现,在boost中貌似也有类似的东西。。。但是作为一个磨练自己技术的机会,我觉得这个项目还是很有必要的,后来在实际操作中发现,编写这么一个大统一数据结构的确是有点难(重复造轮子永远是难的),因此我退而求其次,只用最基本的数据结构,来实现自己的统一数据结构类,var类,我觉得应该不会太难。
关于我对var.cpp的期待,有如下几点:
包含数据结构:
- 整型
- 布尔型
- 浮点型
- 字符型
- 数组
- 单元数组(可以包含不同数据结构的元素)
- 字符串
- 字典
- 位(就是一个bit)
- NULL型
初始化:
初始化应该十分简洁优美,没有多余的东西,例如:
var v1 = 1;
var v2 = 1.0;
var v3 = false;
var v4 = "abcd";
var v5 = {1, 2, 3, 4}; // 也可以:var v5({1, 2, 3, 4});
var v6 = {1, 1.0, "abcd", {2,3,4}, v3};
对于这个单元数组,在C++11有一个新特性,可以实现这么写,我以后再更具体地细节。
数据结构转换:
数据结构转换功能应该十分强大,任何数据结构都能够toString(),可以被printf()出来,同样的,各个数据结构之间也能够相互转换,通过toInt(),toFloat()等函数进行转换,另外,还能实现隐式转换,例如,一个整型与字符型相加,不会报错,而是把整型转换成字符串型,然后再拼接,最后得出一个字符串型。
现在想到的就是这么多,以后有什么新想法再慢慢更。。。