今天了解了一下拷贝构造函数和Clone()函数的内容,准备给自己程序中的图元类加进去。结果遇到了麻烦。加了拷贝构造函数和Clone函数之后,程序执行一开始就报错,跟踪发现去执行了不该执行的函数,不知道怎么会跳过去的,从代码上我根本没要去执行。去掉拷贝构造函数(这样就用默认的拷贝构造函数了),只留下Clone,结果提示所有Clone必须返回一个值。代码上确确实实是返回了的啊,比如
return GTLine(*this);
折腾老半天,干脆新建一工程逐步逐步加内容,最后发现是我在基类中定义了GraphicsPath变量。改为指针就可以了。可是这时候编译是通过了,但运行结果有点乱。
还是把备份的代码返回来整。想想目前Clone也不是很必需,可以以后考虑,就暂时不加了吧。目前的拷贝是通过把当前选中图元转换成Xml字符串后进行复制解析的。其实这样有个好处是跨程序复制。使用Clone函数的话在大量复制时速度上应该会有提升,但不能跨程序复制了。