C#与C++的不同
1,最重要的长处是 C# 是一种完全面向第一类的词汇,而 C++ 并不是,除此之外 C# 是如前所述 IL 尾端词汇和 .NET Framework CLR 的,在可扩大性,可扩大性 和强健性都比 C++ 有十分大的改进
2,C# 的设想目的是用以开发快速不变可扩大的插件,总之也能通过 Interop 和 Pinvoke 顺利完成许多下层操做,但对许多和下层系统相关很亲近的流程(譬如BIOS),仍是建议用 C++ 来写
3,C++ 不容许在两个缺省中初始化除此之外两个缺省(称为指派缺省初始化),而 C# 则容许。指派缺省初始化句法上十分大天然和简练,现实上, C++ 不供给而此长处并并不是所致句法上的考量,而是所致系统办理的考量(那种的事对 C++ 而言还有许许多多)。
4,C++ 的缺省用做洛祖,而析构表达式用做释放出来资本,缺省和析构解释器必需相婚配,否则就打破了 C++ 的根本原则。假设容许指派缺省初始化,则或许会打破而此原则——缺省被继续施行三次,而析构表达式只继续施行一次。总之,对许多类,例如后面的阿谁 Point 而言那并不是个问题,但从词汇监视机造的视角讲阿谁长处可能属于“懦弱”的长处。注:在新一代的 C++ 尺度一致同意提案中,Herb 等人有两个关于容许指派缺省初始化的决议案,总之那十分大水平上是为了便利快速 C++ /CLI 存取。
5,在 C++ 缺省中,虚解释器会被C++手动转成一般解释器,而在 C# 缺省中容许展开虚解释器。 C++ 那种处置大天然有它的其原因——在 C++ 中,缺省继续施行顺利完成后第一类才初始化好,对隐式第一类而言,也就意味著缺省在另一面继续施行了很重要的两件事——初始化第一类的虚表达式表。 如 果他们在派生类的缺省中初始化了虚表达式,则即便此时第一类的虚表达式表照旧是派生类的虚表达式表,因而无法展开得当的虚解释器。 也是阿谁其原因,凡是我 们应该避免在缺省中初始化虚表达式,即便它违背了虚表达式的语法。 而在 C# 中,在第一类的缺省继续施行之前第一类的tcsh就已经初始化好了,因而能展开一般的虚解释器