如何从C快速过渡到C++?

1.C和C++的区别:

  • C语言可以在C++编译器上完美运行,即C属于C++
  • C++比C多出来一些函数库
  • C++是面向对象编程(即有class以及相关工具)

2.如何从C过渡到C++

2.1 代码实例:(C语言版)uva11000.

#include<stdio.h>
int main()
{
        long long m = 0, fm = 1, sum = 1;
        int n,i;
        while(scanf("%d",&n),n != -1){
                m = 0, fm = 1, sum = 1;
                for(i = 0;i < n;i++){
                        fm = m + 1;
                        m = sum;
                        sum = m + fm;
                }
                printf("%lld %lld\n",m,sum);
        }
        return 0;
}

重点不在于解上面这题,请将重点放在写法。以上是C语言写法,为什么说是C语言写法呢?因为上述代码有几个C独有的特点:

  • 第1行:#include<stdio.h>
  • 第5行:scanf("%d",&n)
  • 第13行:printf("%lld %lld\n",m,sum);

这三点也是C和C++最基本的区别,下面看C++版本:

#include<iostream>
using namespace std;
int main()
{
        long long m = 0, fm = 1, sum = 1;
        int n,i;
        while(cin >> n,n != -1){
                m = 0, fm = 1, sum = 1;
                for(i = 0;i < n;i++){
                        fm = m + 1;
                        m = sum;
                        sum = m + fm;
                }
                cout << m << " " << sum << endl;
        }
        return 0;
}
  • 第1行:#include<iostream>
  • 第2行:using namespace std;
  • 第6行:cin >> n;
  • 第14行:cout << m << " " << sum << endl;
  1. 其中第1行头文件iostream,和C语言中的stdio.h类似,可以对比理解。
  2. 第2行的using namespace std 的意思是声明使用命名空间std。可以不深入理解,只要写C++就敲这一行就可以了。(想了解的直接百度就可以,很简单)
  3. 第6行:cin全名叫 标准输入流。和C语言中的scanf用法类似,只是它用起来更为方便(大多数情况下),不需要区分不同的类型用不同的写法,所有类型只需要用cin >> (变量名)就可以了。
  4. 第14行:和cin类似,cout是标准输出流,与C中的printf类似,但是它也不用区分不同的类型用不同输出符号,不管什么类型只要用cout << (变量名) 就可以了。其中endl相当于C语言中的 ‘\n’ 换行符。

2.2 初步掌握C++:

如果你已经明白上面4个C++的特点的话,那现在你用C编写代码有多顺畅你用C++就可以同样顺畅了。因为其他写法(for、if、else……)和C完全相同。

3.如何利用C++的优点(提高):

一开始就提到,C++和C的不同在于C++丰富的函数库,其中最方便的是STL(一个库名)。很多书会讲这一个库单独拿出来讲,其中包括一些非常方便的容器(vector、map),现在看不懂也没关系,这个是需要花时间学的。从C过渡到C++只需要一个下午(C基础好),但是学会使用C++的各种函数,需要花很久。

4.推荐书籍:

个人入门用的是《C++ primer plus》第六版。这本书很厚,但是不需要看完,就像用字典一样看它就可以(用来看各种函数定义)。然后是提高,建议买一本专门讲STl的书来深入掌握STL,因为它真的很重要。