- 主题:用c++可能会遇到哪些坑
你这个算是一种观点,支持的人也不少,有道理。
我的看法是角度不同,结果就不同。
避免多重继承的代价,是引入类和接口两种东西,类结构复杂化;
反过来,支持多继承,就不需要类和接口两种东西,但就要妥善解决虚继承问题。
Java 8、C# 8.0 先后在接口中支持默认方法,这就是往多继承又迈进了一步。
目前与C++的不同仅仅在于接口里不支持默认的成员变量。
有很多网上的文章上来就说多重继承如何难以定义和处理,这本身就有先入为主的
洗脑嫌疑。从建模看,如果多重继承与实际模型更接近,就意味着使用类和接口的
复杂性的代价更高。
当然,Java/C#作为简化版的C++,从对初学者友好的角度,让类的结构简单化本身
没有问题,只是把确实需要的场景的负担转嫁出去了。
另外还有观点认为继承本身就多余,不如使用组合,从他的角度出发也有道理,
反正可以解决问题。
我的观点倒是C++固守老一套,对网络、反射、数据库的支持不足,使得它逐步脱离
时代,语言本身的特点应该不是主要问题。
【 在 iFighter (0_Oo) 的大作中提到: 】
: 多重继承 绝对是祸害源泉...
--
修改:exbluesea FROM 123.118.213.*
FROM 123.118.213.*
的确,程序是否有比较好的可读性,和程序语言本身没啥太大关系。
看看今天流行的 Java/C#,中国公司里面一堆一堆的项目,代码烂到不能再烂。
去达内、青鸟几个月就可以学个程序员出来。
话说回来,当年在学校,不少实验室的博士硕士又怎样,该烂一样烂。
【 在 allegro (静水流深) 的大作中提到: 】
: 看不懂别人的程序不是你的问题,是别人程序可读性的问题。
: 不过这都不是问题,问题在于别人在不在意你看不懂。
: 别人在意,别人提高可读性。
: ...................
--
FROM 123.118.213.*
【 在 dpblue 的大作中提到: 】
: 我是说名字起得不好
:
据说有提议改成 rvalue_cast
--
FROM 222.126.214.*
【 在 exbluesea 的大作中提到: 】
: 语言上:
: 主要的坑:指针失效以及没有垃圾回收、还不支持完善的反射
: 优势:多重继承、操作符重载、强大的泛型
: ...................
一般的库比如容器默认都不是线程安全的吧, 有需要都是有专门的线程安全版本。 平时自己写代码也都是假定单线程, 遇见多线程场景再在外面封装/保护吧?
--
FROM 222.126.214.*
是是
【 在 hongdiao (hongdiao) 的大作中提到: 】
: 一般的库比如容器默认都不是线程安全的吧, 有需要都是有专门的线程安全版本。 平时自己写代码也都是假定单线程, 遇见多线程场景再在外面封装/保护吧?
--
FROM 123.118.213.*
靠,怎么和我想的一样。我当时觉得这个叫做move是不是也忒误导人了
再说个让人无语的:删除容器里的元素,有的容器需要先调用remove再调用erase,有的容器只调用erase,有的容器只调用erase或者只调用remove都可以,不过是给不同情况下用的
再问一句楼主:你扶还是不扶
【 在 hongdiao 的大作中提到: 】
: 据说有提议改成 rvalue_cast
--
FROM 45.119.223.*
改成transfer
【 在 dpblue 的大作中提到: 】
: 靠,怎么和我想的一样。我当时觉得这个叫做move是不是也忒误导人了
: 再说个让人无语的:删除容器里的元素,有的容器需要先调用remove再调用erase,有的容器只调用erase,有的容器只调用erase或者只调用remove都可以,不过是给不同情况下用的
: 再问一句楼主:你扶还是不扶
: ...................
--
FROM 106.120.233.*
有的没顶,有地没膝,还是不一样的。
【 在 ble 的大作中提到: 】
: 沼泽里哪里有什么坑?
: 发自「今日水木 on NX563J」
--
FROM 111.201.70.*
【 在 dpblue 的大作中提到: 】
: 靠,怎么和我想的一样。我当时觉得这个叫做move是不是也忒误导人了
: 再说个让人无语的:删除容器里的元素,有的容器需要先调用remove再调用erase,有的容器只调用erase,有的容器只调用erase或者只调用remove都可以,不过是给不同情况下用的
: 再问一句楼主:你扶还是不扶
: ...................
这个是有点混乱,不过似乎还是有点规则的? 凡是通过STL算法调用的都无法真正删除,真正删除的都是容器自己的成员函数。你看iterator适配器里面有inserter, back_inserter,就是没有deleter :)
--
FROM 1.91.32.*
忍不住赞一个
【 在 ble 的大作中提到: 】
:
: 沼泽里哪里有什么坑?
:
: 发自「今日水木 on NX563J」
: --
发自「今日水木 on iPhone XS Max」
--
FROM 221.216.142.*