C++,难学,好用,估计是大多数人的观点,但也有认为c++什么都能干,但什么也不能干。
C++有着比c略低的效率,有着面向过程和面向对象相兼容的语法,估计这也是不同想法的原因之一。
最近看了几本c++的书籍,感受颇深,难,真的很难,之前没有这么了解c++之前,觉得就是比c多了一点面向对象嘛,不是差不太多?
强,能干的事情真的很多,当然了,有说大部分语言也是能干很多事情吧,是的,但是他们有着很多的限制,我了解的语言也不多,目前很火的Java,c#,Java能够很好的跨平台,但是不说他的效率,Java也需要必要的运行环境
对语言的认识也就决定了对语言的运用
面向对象是什么?我还不是很明白,不是说带了一个class关键字就叫面性对象,c同样可以写出面向对象的代码。他是一种编程思想,一种程序结构,外在视其表现,内在是其基本。C++是一门中高级语言,c语言算是中级语言,而向Java则应该是高级语言,语言的级别越高,并不是说就越好或者什么什么,而是可以屏蔽很多不想要你来考虑的事情,自然而然的过滤掉了,写起代码来会更有效率。比如安卓,你只需要想想你要做什么,而不必花费心思在做的事情需要什么底层的支撑上。不仅减少了犯错误的机会,也减少了代码量。
那么究竟对语言应该有怎么样的认识?了解他的起源,历史?了解他的种种特性?掌握它的种种技巧?或者还是知道他的缺陷?应该都是吧,就目前的我也无法回答这个问题。我忽然又想起当初一直说要学习嵌入式,什么是嵌入式?什么叫做学习嵌入式?学习什么东西?叫做嵌入式?当初及一直没有明白,嵌入式硬件应该只是一个平台,软件应该是一把工具可以让你来运用它。学习c++应该也是如此,c++只是一个工具,他可以让你实现你要实现的东西,目的应该是实现目的,更加认识c++会让你更好的实现目的,或提高效率或代码更简洁。
多态是一个很有意思的东西。我多多态的理解,使用基类的指针可以准确的调用基类或子类的虚函数。虚函数支撑着多态这种机制,如果类中存在虚函数,那么内存结构总则存在一个对应的虚函数表,和一个虚函数指针,指针指向虚函数表,而虚函数表里面存放着虚函数的地址。一个类继承自一个带有虚函数的类,那么也就有力多态的特性。在c语言中我们如果要实现一个指针能够指向不同类型变量或函数的功能,我们可以使用void指针,但是那样显然没有这样好,甚至无法实现类似多态的效果,因为他根本就不知道传进来的指针到底是什么类型,都无法强制转换。不过我最近也想到了一个办法,让他能有一点点的像,一个程称为“基类”的结构体,两个称为“子类”的结构体,分别包含“基类”,模拟继承的效果。然后通通强制转化为基类,那么则可以调用不同的变量或者函数。
C++好,为什么说他好,多态好,还有一个模板同样好。我看来就是把类型当参数,然后构建一个模子,你说要int型的,好,照着这个模子给你造一个,系统来给你造。一套代码,多次复用。这里的复用并不是真正的复用,实际上还是会生成不同的代码,那说复用的意思是,我们可以只写一套代码,降低程序员的重复工作量,以前需要你做的事情,现在编译器给你做了。
C++还有一个地方,估计也是常考的问题,new,和delete,这是两个关键字。可以被重载,他会调用类的构造函数和析构函数。我看到书上说,在内部调用的仍然是malloc,是对malloc的封装,但是对我们用户来说,确带来很多好处。
这些特性应该也就是高级特性了吧,降低代码写作者的工作量,解放猿者的双手。