怎样扎实C++基本功.....

伟大的蝈蝈 2013-03-20 06:11:59
最近偿试着去学习ACE,看了有两个星期的书和代码,越看越感觉吃力了。感觉自己的C++基础还不够,因此决定先把ACE放下,扎实一下C++的基本功之后,再继续学习。可是回过头来再看C++,突然就不知道该怎么下手了,在此特意请教一下各位大牛,学习C++的方法,书籍,或者其它的一些东西。
另外,对于ACE,我也想听听大家的看法,是否有必要一探究竟,我到现在都还不确定,希望过来人指点一下。如果要学习ACE,需要怎样的基础与前提,用什么方法比较好。小生在此谢过啦!!!!!
...全文
288 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-03-21
  • 打赏
  • 举报
回复
个人意见:对ACE没必要一探究竟。 ACE中文资料chm,支持全文搜索,从网上下载并整理。http://download.csdn.net/detail/zhao4zhong1/1753767
tony2278 2013-03-21
  • 打赏
  • 举报
回复
引用 4 楼 dy106 的回复:
多看书,多敲代码
例如看看primer
Roth- 2013-03-20
  • 打赏
  • 举报
回复
把primer快速看一遍,然后写一些东西,例如图书馆管理系统,然后debug,提升很快,重要的是debug,debug过程你会发现很多你不会的,百度之,然后提升很快
  • 打赏
  • 举报
回复
VS生成的是整个解决方案的,自己看工程的时候,画单独工程的UML,不要用VS生成的,也不方便看
伟大的蝈蝈 2013-03-20
  • 打赏
  • 举报
回复
引用 10 楼 CKnightx 的回复:
引用 7 楼 qq77821542 的回复:引用 3 楼 CKnightx 的回复:沉下心来看书,模糊,不懂得地方,敲代码试验。 ACE是学习的好源码。还是值得学一学的。 学习ACE需要知道一些常见的设计模式。 话说我还没有看过ACE,值听牛人说过其结构。 学习是自己的事情,不要管别人怎么说。 我是一边看源码,一边看示例,示例看着还好,不过源码就比较那个……
我用的是VS,刚开始的时候我就用那个工具生成了整个类图,真的是有够恐怖的,全是密密麻麻的小方块和线条。不过,当时我并不怕,还是耐着性子一点一点看,还从网上下了很多ACE相关的书籍来配合着看,不过,越看到后面就越觉得辛苦,信心有点小打击。另一方面,我也感觉到我的C++功底还不扎实,所以想回头来再打一下基础再战!也许这样,学起来会比较轻松吧!至少,我希望会是这样。。。。
  • 打赏
  • 举报
回复
引用 7 楼 qq77821542 的回复:
引用 3 楼 CKnightx 的回复:沉下心来看书,模糊,不懂得地方,敲代码试验。 ACE是学习的好源码。还是值得学一学的。 学习ACE需要知道一些常见的设计模式。 话说我还没有看过ACE,值听牛人说过其结构。 学习是自己的事情,不要管别人怎么说。 我是一边看源码,一边看示例,示例看着还好,不过源码就比较那个了,太多的继承,而且每个类都不是相对独立的,……
先粗略画出UML 静态类图,然后根据静态类图,从基类往派生类看。 在看的过程中,再根据理解,完善静态类图。顺便还可以学学设计模式,看看作者为什么要这么设计
伟大的蝈蝈 2013-03-20
  • 打赏
  • 举报
回复
引用 6 楼 cq20110310 的回复:
这里有篇整理的关于如何学好编程, 还有一些书籍 希望对你有所帮助 地址:http://download.csdn.net/detail/cq20110310/5161744
谢谢你的帮助,我下下来看看,希望能从中找到有用的信息,其实最主要的,还是希望能找回一点信心。这样,会比较有动力。
伟大的蝈蝈 2013-03-20
  • 打赏
  • 举报
回复
引用 1 楼 chuachua66 的回复:
把primer看一遍基本的就都知道了吧。你要是想看就边看边学呗,有啥不懂的现学呗,有空多学点总没坏处。:)
这是本好书,我看过,不过那已经是很久以前的事了,我也觉得,我应该再拿出来看看
伟大的蝈蝈 2013-03-20
  • 打赏
  • 举报
回复
引用 3 楼 CKnightx 的回复:
沉下心来看书,模糊,不懂得地方,敲代码试验。 ACE是学习的好源码。还是值得学一学的。 学习ACE需要知道一些常见的设计模式。 话说我还没有看过ACE,值听牛人说过其结构。 学习是自己的事情,不要管别人怎么说。
我是一边看源码,一边看示例,示例看着还好,不过源码就比较那个了,太多的继承,而且每个类都不是相对独立的,总是牵扯了其它的一些类,然后其它的类又是各种继承来的,得一个一个基类往上找,然后,你就会发现离自己看的东西越来越远了,郁闷。。。。。
这就是编程 2013-03-20
  • 打赏
  • 举报
回复
这里有篇整理的关于如何学好编程, 还有一些书籍 希望对你有所帮助 地址:http://download.csdn.net/detail/cq20110310/5161744
starytx 2013-03-20
  • 打赏
  • 举报
回复
引用 2 楼 starytx 的回复:
学ACE只会proactor框架和组播的使用,足以应付一般的网络通信应用,深层次的没接触过,也不需要啥特别的基础,有些c++基础就行了
我说的是情况,感觉够用了,可能其他的东西暂时没用到,所以没怎么看
_sunshine 2013-03-20
  • 打赏
  • 举报
回复
多看书,多敲代码
  • 打赏
  • 举报
回复
沉下心来看书,模糊,不懂得地方,敲代码试验。 ACE是学习的好源码。还是值得学一学的。 学习ACE需要知道一些常见的设计模式。 话说我还没有看过ACE,值听牛人说过其结构。 学习是自己的事情,不要管别人怎么说。
starytx 2013-03-20
  • 打赏
  • 举报
回复
学ACE只会proactor框架和组播的使用,足以应付一般的网络通信应用,深层次的没接触过,也不需要啥特别的基础,有些c++基础就行了
chuachua66 2013-03-20
  • 打赏
  • 举报
回复
把primer看一遍基本的就都知道了吧。你要是想看就边看边学呗,有啥不懂的现学呗,有空多学点总没坏处。:)
本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。   许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。   分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。   2.找错题   试题1: void test1() {  char string[10];  char* str1 = "0123456789";  strcpy( string, str1 ); }   试题2: void test2() {  char string[10], str1[10];  int i;  for(i=0; i<10; i++)  {   str1[i] = 'a';  }  strcpy( string, str1 ); }   试题3: void test3(char* str1) {  char string[10];  if( strlen( str1 ) <= 10 )  {   strcpy( string, str1 );  } }   解答:   试题1字符串str1需要11个字节才能存放下(包括末尾的’\0’),而string只有10个字节的空间,strcpy会导致数组越界;   对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分;   对试题3,if(strlen(str1) <= 10)应改为if(strlen(str1) < 10),因为strlen的结果未统计’\0’所占用的1个字节。   剖析:   考查对基本功的掌握:   (1)字符串以’\0’结尾;   (2)对数组越界把握的敏感度;   (3)库函数strcpy的工作方式,如果编写一个标准strcpy函数的总分值为10,下面给出几个不同得分的答案:   2分 void strcpy( char *strDest, char *strSrc ) {   while( (*strDest++ = * strSrc++) != ‘\0’ ); }   4分 void strcpy( char *strDest, const char *strSrc ) //将源字符串加const,表明其为输入参数,加2分 {   while( (*strDest++ = * strSrc++) != ‘\0’ ); }   7分 void strcpy(char *strDest, const char *strSrc) {  //对源地址和目的地址加非0断言,加3分  assert( (strDest != NULL) && (strSrc != NULL) );  while( (*strDest++ = * strSrc++) != ‘\0’ ); }   10分 //为了实现链式操作,将目的地址返回,加3分! char * strcpy( char *strDest, const char *strSrc ) {  assert( (strDest != NULL) && (strSrc != NULL) );  char *address = strDest;  while( (*strDest++ = * strSrc++) != ‘\0’ );   return address; } 从2分到10分的几个答案我们可以清楚的看到,小小的strcpy竟然暗藏着这么多玄机,真不是盖的!需要多么扎实基本功才能写一个完美的strcpy啊!   (4)对strlen的掌握,它没有包括字符串末尾的'\0'。   读者看了不同分值的strcpy版本,应该也可以写出一个10分的str
机器⼈控制⼊门 机器⼈控制⼊门 对于⼯科领域来说,脱离实践的学习都是肤浅的,对于控制这种强调经验的技术更是如此。如果去问⼀个程序员怎么学习⼀块技术,他必然让你去多编程。机器 ⼈领域也是。如果想把基本功扎实,那么实践更是必不可少了。 机器⼈控制有三个元素:控制器(算法),执⾏器(电机),传感器; 1. 控制的本质就是将规划系统的指令作为输⼊信息,将传感器探测得到的状态信息和导航系统的定位信息作为反馈,计算得到执⾏器的控制信号,完成运动 控制的闭环。 2. 控制的原则就是稳定、准确、快速。 3. 知识构架分为两部分:理论环节、实践环节。1)理论环节即PID控制的原理,如何作⽤于被控物,这⾥包括⾃动控制原理中结构图、传递函数、数学模 型、求解微分⽅程等知识的学习2)实践部分则包括相关软硬件的知识,软件即编程,也涉及到操作系统的相关知识。硬件如⼯控板的使⽤等。 机器⼈控制(Robot Control)的⽬的是通过⼈⼯引⼊控制改善原有系统的特性,使新的系统: 1)跟踪性能(Tracking Performance)更好, 2)抗扰动性(Diturbance Rejection)更强, 3)稳健性(Robustness)更优,e.t.c. 机器⼈控制⼤致可以分为硬件和算法两个⼤⽅向: 机器⼈控制硬件 基本控制结构:当年,N. Wiener对神经科学很感兴趣,发现其实机器的反馈控制和⼈的运动控制机理是相似的。控制⼯程中的:传感器(各种位 置、速度、⼒传感器等)、控制器(各种处理器以及控制算法)和驱动器(电机、液压、⽓动、记忆合⾦等)三部分,分别对应于⼈的感受器 (receptor)(例如:视觉、听觉、味觉、嗅觉、触觉等外感受器)、神经系统(中枢和周围神经系统)和效应器(effector)(肌⾁、⾻骼),只不 过⼈的结构更加复杂。 层次控制体系:了解了控制的基本结构,剩下的事情就是设计控制系统。如今,⼤家设计控制系统的⽅法还是⽐较统⼀的,基本都可以归结为5层的 层次体系: 1)主机(Host), 2)运动控制器(Motion Controller), 3)伺服驱动器(Servo Driver), 4)电机(Motor), 5)机构(Mechanism )。 主机:主要完成⼈机交互(操作员控制或者调试机器),⾼级运算(机器⼈运动规划等)。由于需要⾼等运算功能,这部分算法通常是基于操作 系统的,硬件载体⽤通⽤计算机即可。 运动控制器:主要⽤于改善机器⼈动⼒学(Robot Dynamics)。机器⼈的机械本⾝并不具备跟踪轨迹的能⼒,需要外加控制来改善。由于需要 ⼤量的实时运算,这部分通常是基于实时操作系统,⽐如QNX等,硬件载体可以⽤ARM或其他。⽐如,⼯业界的⼯业机器⼈主要使⽤运动反馈 (Motion Feedback),也即将驱动器配置为位置控制或者速度控制模式,此时运动控制器的主要⽤于补偿传动系统⾮线性性,例如:由于齿轮 间隙、微⼩弹性变形导致的末端偏移。 伺服驱动器:主要⽤于改善电机动⼒学(Motor Dynamics)。由于电机本⾝物理特性并不具备良好的位置、速度和⼒矩跟踪能⼒,因此需要依 靠控制来改善。这部分需要更⾼的实时性能,因为电机的响应速度快,需要us级定时,所以可以使⽤⾼性能DSP。⽐如,直流有刷电机中转⼦速 度正⽐于反向电动势、⼒矩正⽐于电枢电流,⽽没有物理量能够直接控制位置,此时需要外加位置控制器。 电机:充当执⾏器,将电信号转化为机械运动。 机械本体:被控制的终极对象。 算法的编写:鉴于如今⼏乎没⼈再⽤Op-Amp搭建模拟计算机的事实,可以说算法就是个编程问题。基本的编程语⾔能⼒,⽐如MATLAB、C、C++是 必须的。设计好算法之后,还需⾯对另外⼏个问题: 离散化问题(Discretization):连续算法的离散化是必要的,因为如今计算机都是数字系统。对于线性系统,⽐如电机控制,⽅法当然就是从s 域(传递函数)到z域(Z变换)再到t域(差分⽅程)的变换,⾮线性的就得研究微分⽅程的各种数值⽅法了。 混合控制问题(Hybrid Control):⼏乎当前所有的机器⼈控制系统都不仅有⼀个控制模式,⽐如:回初始位置、运动控制模式、⼈⼯试教模式 等等,每个模式需要特殊的控制算法。单个系统存在多个控制器时被称为混合控制系统,混合控制系统常常使⽤有限状态机(Finite State Machine, FSM)建模,状态机的切换需注意⼀些问题,⽐如芝诺问题。 通信问题(Communication):通常机器⼈系统都包含⼏⼗个,甚⾄上百个传感器以及⼏个到⼗⼏个驱动器,通信时常是个头疼的问题。问题的 复杂性源于:通信对象多(并发问题),顺序需要协调(时序问题),通信的速率需要兼顾(阻塞问题)。个⼈倾向于使⽤基于"事件驱动模 型"+"有限

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧