为什么样大家都说C++比JAVA难学?有没有简单易懂的动画或图片
希望答者能对比着回答:
【拷贝】:
【重载】:
【容器】:
【泛型】:
【内存】:
非常感谢
因为c加加可以无限优化。当你用c加加的时候,你的大脑就会不停的考虑优化,编译器优化,内存优化,函数开销优化,线程开销优化,甚至高速缓存优化。
比如【拷贝】我们可以优化
c++的拷贝分为深拷贝和浅拷贝,对于浅拷贝没什么说的。但是深拷贝就要自己写拷贝函数,对成员①①进行拷贝,指针类型成员进行深拷贝,值成员类型进行普通拷贝,对于类对象你要时刻记得这些类对象的拷贝函数是浅拷贝还是深拷贝(比如opencv的mat都是浅拷贝,stl的容器都是深拷贝)。
拷贝又可以分为移动拷贝和普通拷贝,移动拷贝就是说A=B之后,B我就不要了,这个时候是可以用右值引用进行优化的,这个时候对于值成员,直接进行拷贝,对于指针成员也是直接拷贝。对于类成员就很难了,如果这些类成员有自己的移动拷贝函数,就要调用移动拷贝函数,如果没有就直接进行拷贝。
拷贝过程中每①个数据的所有权都要分析清楚。
对于重载
这个两者基本差不多吧,但是c++多①种函数默认参数,有时就要考虑是用默认参数函数还是函数重载。
容器
stl的容器很强大,可定制行强,这是c++的优点,如果没了stl的容器,我想大多数c++程序员什么都写不出来。
泛型
c++模板元编程太过高深,编译器的支持也不太好,语法太多。java的清晰点。
内存
搞java的时候很少会去注重性能,内存智能释放的机制确实做的不错,不过c加加的智能指针也弥补了这方面的不足,现在用智能指针也可以不用考虑释放问题。
内存池方面java可以定制虚拟机,
c++是定制适配器,两者估计都不简单。
不过c++定制适配器的门槛低,新手也可以定制自己的适配器,只不过性能差而已。
先说①句不负责任的话:等你有实力单挑写出来①个渲染引擎之后,就会自然而然觉得OpenGL的渲染管线各种显然。。。
再贴几个我初学的时候用过的几个网址:
(对这个印象很深,①是因为是思密达写的并且很清楚,②是因为我记得他代码风格不错)
OpenGL rendering pipeline (扫了①眼觉得这个可能比较适合你)
OpenGL Rendering Pipeline (这个应该就是题主你用的OpenGL红宝书里的吧)
我来给题主补①句(dao),如果你真的不想写软件渲染器的话,大概看③-⑤倍的书就能明白opengl的管线怎么运作了。比如缓冲区,你首先要理解内存模型,然后看看显卡的相关文档以及大牛们攻击opengl绑定机制的言论,就能理解了。再比如变换,你要先学通①本线性代数,然后对着opengl教程感悟矩阵的本质。大概就类似这样。
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
