因为本月的欧洲杯,已经请了两天的休假,再请我自己都不好意思了。但是有又想看啊,矛盾ing……
这个星期更新编程的内容。下个星期更新游戏评论。
2、面向对象
C#中没有复制构造方法,复制的语义通过实现ICloneable接口获得。
C#通过垃圾回收系统管理所有内存,所以new过之后不需要delete操作符。而在对象超过作用域时,勿需调用析构方法。
如要让值以引用方式传递给函数,需在调用和目的地两处指定ref。
C#中没有私有或保护继承。这证实了这两种继承的无用性。
C#中必须显式用关键字override标记表示重新定义虚函数。new关键字表明不重定义虚函数,也就是说这是一个新的虚函数。
也就是说,必须使用override关键字来实现多态。
C#使用单类层次的单一继承,所有类都继承自object基类,而且不可能多重继承。但是C#的接口提供了多重继承的功能,接口的作用是混入其他继承树,虽然这显得很有弹性,但也会制造出混乱。
关于多重继承和单继承的争论也是C++社群争论的一个焦点,一派说要用,一派不用。如果要使用,也得明智而审慎的使用。
C#不能创建非静态操作符,且二元操作符必须有两个操作数。
C#要求重载操作符必须配对,如==和!=,<和>等等。
C#的结构体是值类型,类是引用类型。
因为C#是值类型,所以即可以new出来,也可以直接创建。类是引用类型,只能new出实例。
而C++的类和结构体除了默认属性一个为private,一个为public外,完全相同。
![附件[ematt:28]](http://www.emlog.net/nemo/uploadfile/200806/1dc190565a71bacd85c50a5c2c05014f20080622163238.jpg)
![附件[ematt:32]](http://www.emlog.net/nemo/uploadfile/200806/b0dc0ee10c021c154208c1726fc4152420080622163238.jpg)
