(超详细)如何由C过度到C++

目录

一、C和C++的区别

二、由C快速过度到C++

1、C与C++的框架不同点(不同处有红色标记)

2、C与C++不同的总结

3、初步掌握

三、C++的函数库(使你变强)


一、C和C++的区别

1、C语言可以在C++编译器上运行(C++包涵C)

2、C++与C相比有函数库(STL、BOOST等等)

3、C++是面向对象的编程语言(有class类及特性)

二、由C快速过度到C++

1、C与C++的框架不同点(不同处有红色标记)

由C对比C++

①C版框架:

#include

int main(){

        int a,b;

        scanf("%d%d",&a,&b)

        printf("%d ",a+b);

        return 0;

}

②C++版框架1(改动一些)

#include

int main(){                        

        int a,b;

        scanf("%d%d",&a,&b)

        printf("%d ",a+b);

        return 0;

}

③C++版框架1(最后改动一些)

#include

#include

using namespace std;

int main(){

        int a,b;

        cin>>a>>b;

        cout<

        return 0;

}

在C++中推荐的将stdio.h写为cstdio(即去末尾的.h然后在开头加c),string、cmath也类似。

在C++中更推荐使用iostream(提供输入输出流)代替原本的cstdio,使用iostream头文件后就可以使用std::cin,再加上using namespace std声明命名空间std后(原理在后面的4、中) 就可以用cin代替复杂的std::cin,cout也同理。使用cin和cout的优点有:“不需要记忆%d%s等占位符,同时也避开了long long类型的输入输出展位符不统一的问题” ,坏处有:“最大缺点就是运行太慢,以至于很多竞赛题目会注明本题输入量很大,请不要使用C++的流输入。”,不过流也可以加速,方法是关闭和stdio的同步,即调用ios::sync_with_stdio(face)

在C++中algorithm提供了常用的算法如min函数(下列代码位用到但此头文件很常用)

C++中有一个名称空间(namespace)的概念,用来缓解复杂程序的组织问题。如上述2、中所述,如果不添加using namepace std 则会使用输入输出流的语句变复杂。对于如何缓解复杂程序的组织问题,我举个例子小A小B同学都写了一个函数,虽然作用不同但是巧的是函数名相同都为good_function(),如果要把他们两人的程序合在一起用,就会出现问题函数名不能重复。即使C++支持函数重载,但是如果这两个函数的参数类型也相同,则是不能重载的。一个解决方案是分别把函数写在各自的名称空间里,然后就用xA:good_function()和xB:good_function()这样的方式进行调用了。基于这样的考虑,头文件iostream和algorithm里定义的内容放在std名称空间里。如果代码和该名称空间里的内容不重名,就可以用using namespace std方法把std里的名字导入默认空间。(虽然工程上不推荐这样做,但是算法竞赛的程序通常很小,所以用此方法也无大碍。)这样就可以用cin代替复杂的std::cin,cout代替复杂的std::cout.

cin>>a>>b>>代替scanf("%d%d",&a,&b),cin全称标准输入流,从标准输入中读取a,b。

cout<输出a+b并换行。

2、C与C++不同的总结

①头文件常用{ #include(标准输入输出流)

                         加#include(提供常用算法)

                         加using namespace std }(声明使用命名空间std)

②通过iostream和namespace,使用更为方便的cin>>(变量名)cout>>(变量名)

3、初步掌握

只需要掌握C与C++的不同点后,就能算初步轻松使用C++,因为其他的C++语法如if、for等和C完全相同。

三、C++的函数库(使你变强)

不同于C,C++拥有丰富的函数库,其中最方便的、最重要的STL函数库,其次是BOOST。STL库包含非常方便的容器vector、set、map等等,此外C++还有各种函数使你强大,当然你需要付出很多时间去学习。

你可能感兴趣的:(C/C++,专栏,c语言,c++,开发语言)