当前位置:首页 > 每日看点 > 正文内容

为什么拥有C语言基础的人,依然学不会C++?

卡卷网1年前 (2024-12-12)每日看点221

当你认为 C++ 是面向对象的语言的时候,你就永远学不会 C++。

恰恰大部分学了 C 的人,都会认为 C++ 不过是 C 上加了“对象”。既然是 C with class, 他自然就很自信的认为自己很快就能学会C++。

C++ 不过尔尔。

----
但是,当他有一天,需要使用C++的时候,很快他就会感到巨大的挫败感。
因为C++除了 C with Class ,剩下的东西他没一个能懂的。

C++ 真的是太复杂啦!

这就是大部分人 C++ 从入门到放弃的原因。

----

如果放弃自以为是的面向对象的成见,好好的学习 C++,就会发现, C++其实是个面向“概念”编程的语言。

C++ 的一切特性,都是为了 0 开销抽象 “概念”。

为何会有模板?
因为,同一个概念,用同一份代码。而不管这个概念背后的真实数据类型。比如 std::sort, 他就是排序。只要能比较大小的,就能排序。你管他是 int 还是 char 还是float, 甚至连 string 都能排序。只要能满足 “可比较大小” 这个概念的,都要能排序。

既然排序,就得有容器。排序排序,得有个容器,把东西放里面排排放,那才有顺序的概念。
于是就有了 “容器” 的概念。为了操作容器,就要对容器进行更高程度的抽象,于是就有了 “迭代器”的概念。迭代器,就是用来访问容器里存储的对象的。是容器的抓手。

有了容器,就有了“对象”生命期的管理需求。对象放入容器,拿出容器,它到底何去何从。
于是就有了右值引用和左值引用的概念,这样就能设计出 拷贝构造和移动构造。
有了拷贝和移动的概念,才能设计出性能更好的容器。对象是被移动到容器里的,而不是拷贝进去的。这就大大降低了使用容器存储“大对象”的开销。

这些都有了,又发现,如果用错了对象,对象和模板希望的“概念”不匹配,编译出错就会非常疯狂。
于是就有了 "concept" 关键字。加上了模板参数约束功能。

很多时候,一个通用概念下,总会有一些“特例”。为这些特例按排单独的代码,不共享通用的模板代码,就可以更好的“优化”性能。于是就有了 “模板特化” 功能。

模板特化,是为了更好的实现概念。比如 容器一般会对 普通的“对象” 和 简单的内置类型对象,使用不同的代码。因为内置类型没有“构造函数”。于是,容器的模板,就会对简单类型进行特化。这样的特化代码,对无构造函数,无析构函数的对象,进行针对性的优化。

但是,无构造函数的,难道只是内置类型吗? 用户写的对象,也可以无构造函数。于是,这种模板特化,就不是为具体类型进行特化,而是对某个细分的“概念”进行 一半的特化。这种一半的特化,就叫 模板偏特化。 也是为了更好的实现 面向概念编程。

所以你看,一切 学不会的 C++ 特性,都是因为他还在使用“面向对象”这种思维方式。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/12/4058.html

分享给朋友:

相关文章

个人站长为什么越来越少了?个人网站还能做吗?

个人站长为什么越来越少了?个人网站还能做吗?

在互联网快速发展的浪潮中,个人站长曾经有过辉煌的时代,但如今却面临着诸多困境,甚至走向 “死亡”。一、竞争激烈,难以立足如今的互联网行业,巨头林立,各大平台凭借着雄厚的资金、技术和资源优势,占据了绝大部分市场份额。无论是搜索引擎、社交媒体还...

现在做抖音的话,还有机会嘛?

现在做抖音的话,还有机会嘛?

之前我问过小杨哥一个问题:“现在抖音还好做吗?”疯狂小杨哥在抖音已经突破1亿粉丝,直播间10w的在线观看人数,日常带货随便一场也是上7位数的数据。现在抖音的市场好像已经被头部占领,资源靠前,普通人似乎已经没有机会了?下面是小杨哥对于做抖音的...

为什么大家不再提 5G 了?

现在看来,只有美国那种5g的思路是对的。美国的运营商一开始就发现5g和4g并没有质的飞跃,无非就是提升频率/降低穿透力/提升带宽的故事。而美国运营商又是自负盈亏,因此一开始就仅在人口高密度地区或富裕地区布置5g。虽然说人家4g也菜,但是人家...

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

想要在双 11 换一台全面无短板的新手机,有没有「闭眼买」的机型推荐?

最近一个月各大手机厂商的旗舰机扎堆发布,不知道大家看爽了没?这一代的性能续航大提升,最低 3599 元就能买到,同时老款也有不小的降幅,今年双 11 算是相当适合换手机的节点了!这次,小黑就给大家推荐双 11 期间值得购买的手机...150...

WordPress建站同时面向B端和C端,有什么好的解决方案?

这个很容易实现呀,只不过需要自己开发,整体用权限管理就可以实现了,B端和C端是不同用户权限,C端能看到的菜单入口和B端不一样就行了。技术层面实现没问题的,只不过就是看你们的技术能力和投入了 ,这样的需求应该没有现成的开源插件。只能找人定制开...

都是前端框架,为什么用 React 的人会有优越感?

都是前端框架,为什么用 React 的人会有优越感?

上家公司一直搞react,最近第一次写个vue3项目。老板朋友来了看了下页面说:这用vue写的吧。我:是...老板朋友:一看就知道是vue做的。这tm你看一眼页面就知道用的啥框架?这感觉就是,我一直用苹果,偶尔用了下华为打电话,有个人离老远...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。