【GeekBand】C++笔记(1)

下面这些是我这次通过学习C++的一些笔记和心得:

一、一些基本概念:

C++是在C语言的基础上开发的一种面向对象编程语言。

      说到C++,我们就会想到Object-based与Object-oriented。通过在网上查找以及自己的理解后,我觉得在论坛上看到的这句话说的很对:“Object-oriented支持Polymorphism,而Object-based不支持Polymorphism.主要的区别就在于此。支持多态的代价是额外的间接性--不论是在“内存的获得”或是在“类型的决断”上。”

       而classes之间的关系主要:继承、复合、委托。



二、开发环境的搭建和选择:

       学习C++,IDE是必不可少的,由于我自己之前有装过eclipse,所以我最开始决定使用的是:eclipse+cdt+MinGW的方法。(安装方法参考的是:Eclipse下配置CDT和MinGW终极方法)。

       可是后来还是觉得有些不太好用,而且会影响eclipse的速度(可能是我还没有配置好,但是时间有限),所以我最后还是选择了众所周知Microsoft Visio Studio。


三、代码中的一些思考:

  (一)安装好后,第一件事儿当然就是写一个helloworld,并对vs的环境进行熟悉。并发现了一个问题了:

                              printf("Hello World!\n");    与     std::cout<<"Hello World!"<< std::endl;  是不同的。因为:

       任何一门程序设计语言,基本主要分为两大类:核心的语言环境 + 常用的数据结构和算法(库)。

       而C++标准库里是包含了C标准库的。

       C标准函数库中 printf 的函数定义: int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...); (面向过程)

       C++标准库中的 cout 对象定义: extern ostream cout; (面向对象)


  (二)在写程序过程中,我想到了之前有提到过得inline内联函数,觉得有些模糊。后来,经过上网查找(参考了C++ inline 函数),发现使用内联还是要谨慎:

        内联能提高函数的执行效率,为什么不把所有的函数都定义成内联函数?如果所有的函数都是内联函数,还用得着“内联”这个关键字吗?内联是以代码膨胀(复制)为代价,仅仅省去了函数调用的开销,从而提高函数的执行效率。如果执行函数体内代码的时间,相比于函数调用的开销较大,那么效率的收获会很少。另一方面,每一处内联函数的调用都要复制代码,将使程序的总代码量增大,消耗更多的内存空间。

         以下一些情况不适宜使用内联:

              1、如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。

              2、如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大。类的构造函数和析构函数容易让人误解成使用内联更有效。要当心构造函数和析构函数可能会隐藏一些行为,如“偷偷地”执行了基类或成员对象的构造函数和析构函数。所以不要随便地将构造函数和析构函数的定义体放在类声明中。一个好的编译器将会根据函数的定义体,自动地取消不值得的内联(这进一步说明了 inline 不应该出现在函数的声明中)。

你可能感兴趣的:(【GeekBand】C++笔记(1))