20050321104352d41d8.gif
挑战30天C/C++ 入门极限系列教程
 
 
  仔细想想,与其把这篇短文当作教程的引言,其实它更应该是一篇引导初学者步入C++殿堂的策论。<?XML:NAMESPACE PREFIX = O />

  几年并不算很长的编程经验,使我感触颇深,痛苦迷茫,以及成功后的喜悦一直交替着伴随着我,爱好编程的我,在学习期间的也被很多很多学习的困难疑惑所阻挡,甚至不只一次的想放弃。
管宁的30天极限入门教程就全部连载完了。真心希望这篇教程能给初学者带来一定的帮助。如果您觉得这套系列教程好,请您向您的朋友推荐;接下来,网易学院会独家连载管宁原创的JAVA系列教程,请关注。
作者:管宁
  学习c语言和c++的人首先需要的是一个可提供练习的开发平台,对于c++来说,可供使用的工具平台有很多,包括Borland 的 c++ builder 和 Microsoft 的 Visual Studio 系列,的确他们都是非常不错的。 难道我们除了这些我们说熟悉的开发工具就没有的选择了?[点击阅读全文]
  我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个c++的标准库组件提供给程序员使用。[点击阅读全文]
  自定义类的赋值运算符重载函数的作用与内置赋值运算符的作用类似,但是要要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下,如果没有指定默认的赋值运算符重载函数,那么系统将会自动提供一个赋值运算符重载函数。[点击阅读全文]
  转换运算符的重载函数是没有返回类型的,它和类的构造函数,析构函数一样是不遵循函数有返回类型的规定的,他们都没有返回值。[点击阅读全文]
  在前面的章节中我们已经接触过递增运算符的重载,那时候我们并没有区分前递增与后递增的差别,在通常情况下我们是分别不出++a与a++的差别的,但的确他们直接是存在明显差别的。[点击阅读全文]
  运算符重载是C++的重要组成部分,它可以让程序更加的简单易懂,简单的运算符使用可以使复杂函数的理解更直观。   对于普通对象来说我们很自然的会频繁使用算数运算符让他们参与计算,但是对于自定义类的对象来说,我们是无论如何也不能阻止写出像下面的代码一样的程序?[点击阅读全文]
    在前面的练习中我们一直在使用public的继承方式,即共有继承方式,对于protected和private继承方式,即保护继承与私有继承方式我们并没有讨论。[点击阅读全文]
  在过去的学习中,我们始终接触的单个类的继承,但是在现实生活中,一些新事物往往会拥有两个或者两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念,C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承。[点击阅读全文]
  类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类[点击阅读全文]
  为了不模糊概念在这里我们就简单的阐述一下类的分解,前面的教程我们着重讲述了类的继承,继承的特点就是,派生类继承基类的特性,进行结构扩张,这种逐步扩张,逐步在各派生类中分解彼此不同特性的过程其实就是类的分解。[点击阅读全文]
  友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率,但所矛盾的是,即使是最大限度大保护,同样也破坏了类的封装特性,这即是友元的缺点,在现在cpu速度越来越快的今天我们并不推荐使用它,但它作为c++一个必要的?[点击阅读全文]
  在没有讲述本章内容之前如果我们想要在一个范围内共享某一个数据,那么我们会设立全局对象,但面向对象的程序是由对象构成的,我们如何才能在类范围内共享数据呢?[点击阅读全文]
  在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的[点击阅读全文]
  当我们学过结构体后,我们了解到结构体自身的成员指针可以指向自身对象的地址的时候,我们很容易想到解决这个数学问题,用结构体来描述是再合适不过的了,用它可以很完美的描述环形链表。[点击阅读全文]
  请注意,这一节内容是c++的重点,要特别注意! 我们先说一下什么是构造函数。[点击阅读全文]
  以后的内容我们将逐步完全以c++作为主体了,这也以为着我们的教程正式进入面向对象的编程了。 前面的教程我已经再三说明,结构体的掌握非常重要,重要在哪里呢?重要在结构体和类有相同的特性,但又有很大的区别,类是构成面向对象编程的基础,但它是和结构体有着机器密?[点击阅读全文]
  c/c++中结构体(struct)知识点强化,重点中的重点!在上一个教程中我们已经简单的阐述了什么是结构体了,为了进一部的学习结构体这一重要的知识点,我们今天来学习一下链表结构。[点击阅读全文]
  简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据?[点击阅读全文]
  由于引用本身就是目标的一个别名,引用本身的地址是一个没有意义的值,所以在c++中是无法取得应用的内存地址的,取引用的地址就是取目标的地址,c++本身就根本不提供获取引用内存地址的方法![点击阅读全文]
  在main函数中我们通常使用return (0);这样的方式返回一个值。 但这是限定在非void情况下的也就是void main()这样的形式。[点击阅读全文]
  早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: copy c:\1.txt d:\ 在c/c++中,命令行参数的传递是利用main进行形参传递实现的[点击阅读全文]
  这里的写法,可以避免使用for循环,减少栈空间内存的使用和减少运行时的计算开销![点击阅读全文]
  就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针![点击阅读全文]
  上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c/c++却不是这样。 为什么呢? 答案在这里:因为字符串常量存储在计算机内存中,两个字符串常量的地址均不相同,所以这样的比较自然就?[点击阅读全文]
  堆内存是什么呢? 我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小,在这里c库中的malloc.h头文件中的malloc()函数就为您解决了问题,(bc或者是在老的?[点击阅读全文]
  函数重载是用来描述同名函数具有相同或者相似功能,但数据类型或者是参数不同的函数管理操作的称呼! 我们来举一个实际应用中的例子来说明问题:我们要进行两种不同数据类型的和操作为了实现它,在c语言中我们就要写两个不同名称的涵数来进行区分例如:int testa(int a,int b)[点击阅读全文]
  可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,涵数的死循环递归调用的最终结果就是导致栈内存空间枯竭。[点击阅读全文]
  对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指针特性的知识![点击阅读全文]
  如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。[点击阅读全文]
  希望不完全清楚概念的人看一下! 布尔类型对象可以被赋予文字值true或者false,所对应的关系就是真于假的概念![点击阅读全文]
  const修饰符可以把对象转变成常数对象,什么意思呢? 意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用![点击阅读全文]
  此题的意思在于输入3个同4门课的成绩,计算出平均值和显示其中一个同学的4门课成绩,此例是对多维数组指针和多维数组的指针作为涵数参数传递的总结,认真联系和体会可以很好的了解多维数组指针的概念到底是什么![点击阅读全文]
  对于多维数组的理解比较困难,这也是由于和一维数组指针含义有冲突造成的,例如第5行中的a和*a打印出来的值, 就会让人弄不明白我们知道数组传递的地址那么a表示这个数组的其实地址为什么*a却不是实际值呢?对于多维数指针的理解是个比较难需要反复观察联系的地方需要谨慎[点击阅读全文]
  在c/c++中利用数组名作为函数参数传递排序和用指针进行排序的例子[点击阅读全文]
  指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*指针运算符的作用,假设定义了一个指针变量x,*x所表示的其实就是变量a本身,x表示的是[点击阅读全文]
  最近在帮助其它人的学习中发现了许多问题就数组和局部变量和全居变量的两道例题进行刨析和思考![点击阅读全文]
  写到这里笔者也呼吁更多的程序高手们,敲起你们的键盘,把你们的优秀的经验和思想奉献处理,帮助更多需要人们,在这里我提前感谢你们,毕竟思想是需要的是沟通的,知识是需要的是共享,快乐需要的是传递的。[点击阅读全文]