当前位置:C++技术网 > 资讯 > C++怎么学,好学吗?

C++怎么学,好学吗?

更新时间:2015-08-23 10:07:03浏览次数:1+次

有很多人都说C++好难学啊,比如说:“为什么用cout 啊?printf 不是挺好的嘛?还用cin,scanf也不差 啊!还要写什么类啊?结构体不行嘛?”,东西太多了,感觉太难了,本文简单介绍一下原因和方法(个人观点,如有错误请指教):


为什么用cout 啊?printf 不是挺好的嘛?

        为啥用cout ?有很多时候,我们用的是string,当然很多人会问我:“为啥用string ?”,我的回答就是因为它方便操作,并且不用去计算大小,比如我写了一个界面,用来保存用户的输入,当然不会string 的话就直接定义一个buffer,比如char buffer[4096];如果用户只输入一个字符,,你还是分配那么大的空间,是不是浪费了?但是如果你会用string呢?那么直接一行代码搞定: string buffer。代码只需要一行,就不用手动分配空间,还不用担心溢出。然后因为我们用了string,都是流数据啊,所以cout << buffer<<endl;搞定了。。。如果你用了char buffer[4096];那么就要printf ("%s\n",buffer);比较一下:

//C++版本

string buffer;

cout << buffer<<endl;

//C版本

char buffer[4096];

printf ("%s\n",buffer);

哪个更简洁?

肯定是cout啊,,并且还有好处就是我不需要知道他是什么格式,printf还需要%s %d等等,,控制输出。麻烦多了。



为什么用cin 啊?scanf 不是挺好的嘛?

这个问题也好回答,比如:“char buffer[10];scanf ("%s",buffer);”如果不小心输入多了,直接程序挂掉,程序不稳定,但是如果这样写:


string buffer;cin >> buffer;

这样子就不会出现因为输入多了导致内存不足而溢出的问题了,并且代码量也少啊!!!

最重要的是,scanf 的格式写起来容易错,编译器也不容易检测,比如int a;scanf ("%d",a);和scanf ("%s",a)编译器无法发现的,如果我们采用C++的写法就没问题了,输入错了编译器直接告诉你了;

int a;

cin >> a;//(正确),想写错都挺难的



为什么写什么类 啊?结构体不是挺好的嘛?

这个问题更好回答,我就问你如果你写了一个程序,包含了100个结构体,每个结构体都有自己的操作函数,你怎么办?每用一次函数就去查一次定义嘛?当然你可以用代码提示工具,,当你看到了密密麻麻的代码提示的时候,你知道哪个是你需要的函数嘛?


但是如果你有代码提示工具,你还用了类,就实现了:“拉帮结派”的效果,需要哪个类的哪个函数直接

 ClassName::FunctionName (Paramtor...);

这样的格式就可以了,代码提示工具会在你输入到了  ClassName::  自动枚举当前类的所有函数,可能有十几个函数,但是没有类的话,代码提供工具给你显示几十个函数让你去寻找你的目标函数,一不小心就找错。面对这个问题你会选择抛弃类吗?


如何学习C++ ? 

这个问题我也不知道该怎么学习,其实感觉这些东西没有什么的,你需要把C++理解成一个工具,如果你学习过C语言,那么就相当于你以前是开夏利的,现在学习C++,好比你是开着现代呢,差距就是开车的感觉不同,夏利能跑到140km/h很费力,现代跑140很轻松。。所以说别的都一样,多了点功能。不用害怕。

第一步:完成C++转化,cout 代替printf ,cin代替scanf,学会使用class,以class为主,struct为辅。

第二步:开始写东西,比如自己写一个学生管理系统。(不必参考书上的代码,自己写,否则无法体会到私有变量和公有变量的差距,私有函数和公有函数的差距)。

第三步:接触Qt,感觉一下什么是比较完善的封装机制。同时你可以学习写带界面的东西了。自己靠想象力创造。

第四步:开始学习socket,进军互联网,相信你可以的。

第五步。。。。我也不知道,我也没到这。。。


最后吧,给大家一个建议,就是按照自己的兴趣学习。多写代码。