首页
社区
课程
招聘
[旧帖] [讨论]C++备忘录 0.00雪花
发表于: 2010-8-24 02:14 1418

[旧帖] [讨论]C++备忘录 0.00雪花

2010-8-24 02:14
1418
初学者的一点肤浅认识

  C是面向过程的,而C++是面向对象的。

  比如完成喝水的的任务(忽略水温):
C:
  找个杯子
  灌满水
  倒进嘴巴里(重点是过程)
---------------------------------
C++:
  建立一个叫做水的类
  声明一个类型为水的对象(并且初始化单位为一杯)
  利用水类型的一个(成员)函数把这杯水倒进一个叫嘴巴的对象里(重点是对象)
---------------------------------
1.引用与指针
  如果不用在内存地址里跑来跑去的话,还是引用要来得方便一些,也更安全。但如果一定要使用指针的话,用完一定要找到对应的new并delete之,否则很可能几个循环下来内存里就惨不忍睹了。
  指针最令人头疼的是对它的描述:
#
  int *pr;
  整型指针pr自己有一个内存地址:&pr
  然后它还有一个值:pr,指向了另一个内存地址(邪恶的 int **ppr; )
  最后它还有一个指向的值: *pr ,这个值是一个整型的数据
#
  就像mov eax [esi+4]与lea eax  [esi+4],虽然能明白它们干了些什么,但每次看到这两个语句时,我都得花上好长时间告诉自己:
  mov是把esi+4所在地址的值传给eax,也就是把esi+4看成指针,然后eax = *(esi+4);而lea是把esi+4的值传给eax,也就是eax = esi + 4,即eax变成了指针。
2.const
  const除了可以对变量或对象加保护以外,还可以声明常量(只读变量)。
#
  int noConst;  
  const int *pr;
  pr = &noConst;
#
  pr很快乐地指向了noConst,并且无法通过pr来修改noConst变量所在的内存值,但程序仍然可以用类似noConst++之类的办法修改noConst的值,所以要不要把noConst也设置为const就需要好好考虑一下了。
  在成员函数的后面加const是将this指针设置为const。
3.C的简洁
  对于一个函数int fun(int a, int b)来说,调用时的fun(x,y)可以理解成下面的几行代码:
#
  int a, b;  //定义变量在函数的定义里完成
  a = x;
  b = y;  //变量的初始化在调用时完成
#
  而在for和while的条件语句里往往隐藏着变量的初始化。刚开始就是因为这个原因而导致好多例句看不明白。还有万恶的+=、-=之流,熟练之后很方便,但刚开始总有一个翻译成i=i+1的过程。
4.关于书写
  鉴于int* pr1, pr2;  //pr2为int型变量
  定义指针时还是用int *pr;比较好。
  而const int *a与int const *a是一样的,这个时候就需要找一个自己喜欢的并一直使用,不要一会用前者,过一阵子又用后者,良好的代码书写习惯可以使自己在一周以后再读代码时不至于那么陌生。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
最近在学习C,学习一下,听说C++一般使用于大型的程序设计,不知道是不是?
2010-8-24 06:26
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
  C++比之C来说出活的的速度是很快的。比方说在使用数组的地方改用vectro,用string来代替char……
  但我的做法是在深入学习STL之前回头再看一遍C。因为终究有些地方是不能使用C++的。
2010-8-24 10:32
0
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最近正在看数据结构,看完后我也想学C++,,,,
2010-8-24 11:25
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
刚学会用C编一些小程序,学习中
2010-8-24 12:33
0
雪    币: 32
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
C++ Primer看了一遍又一遍...还是有好多地方记不住呢...
2010-8-24 13:53
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
很多东西还是需要在实践中慢慢熟悉
2010-8-24 15:31
0
雪    币: 2673
活跃值: (2947)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
C++比C好用,,我是这样认为的,做嵌入又不同
2010-8-25 00:04
0
雪    币: 168
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
  看一遍 嘿嘿  当复习了
2010-8-26 22:56
0
雪    币: 102
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
C更接近机器,C++更接近人
2010-8-27 13:44
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
楼主辛苦了,C++我都看了四遍了,,到现在还是两眼一抹黑。。。刚看完还能记得一点点。。。过几天又都还给作者了,,发现我真的是老了。。。唉
2010-8-28 09:45
0
游客
登录 | 注册 方可回帖
返回
//