Chinaunix首页 | 论坛 | 博客
  • 博客访问: 250069
  • 博文数量: 78
  • 博客积分: 1465
  • 博客等级: 上尉
  • 技术积分: 972
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-28 13:46
文章分类

全部博文(78)

文章存档

2012年(1)

2011年(9)

2010年(68)

我的朋友

分类: C/C++

2010-01-14 00:29:51

, ,
C++中类的概念让很多新学者都困惑不解,很多书上对这部分也没有系统的整理,往往显的章节杂乱无章,概念满天飞。其实经过仔细的思考,我发现类中的概念还是计较系统的,现在整理如下,顺便理一下思路,也为以后的学习做好更好的铺垫。 总体的思路如以下的顺序
1.类的定义---其实就是定义了新的类型,同以前经典的类型如int,char等没有任何区别。只是这个类定义中不但包含了数据(属性),而且还有函数(方法)罢了.
2.对象的定义---使用新的类型,生成该类型的一个变量,在OOP中就叫对象或者实例。
3.对象的初始化---对象的初始化与一般变量的初始化基本相同,就是让这个变量内部的数据有值。
4.类内部的数据变量的不同类型----一般变量、静态数据变量、常数据变量、内含另一个类对象的数据变量
5.类内部的成员函数的不同类型----就好像是一般的函数,不过又分为一般函数、静态函数、常函数等
6.对象的操作---对象进行赋值操作、加法操作、减法操作等,这部分其实就是运算符重载啦!
1。类的定义
    1.1类定义的三种写法:
      a。方法写在类定义的内部(内联函数)
      b。方法写在类定义的外部(外联函数)
      c。类的定义写在外部文件
2。对象的定义
    2.1对象定义的两种方法
      a。类名 对象名(带参数与不带参数)
      b。类名 *指针变量=new 类名()
   2.2对象定义时的不同位置
      a。定义在所有函数的外部--全局对象
      b。定义在函数的内部---局部对象
      c。定义在函数的内部,但是前面有关键字static---静态局部对象
      d。定义堆对象----使用new操作符。
      e。定义时前面加有关键字const ---常对象
3。对象的初始化
     对象的初始化就像一般变量的初始化,一般变量的初始化方法有三种:
     a。int  a=10;
     b。int b;b=10;int a=b;
     c。int b;b=10;int a(b);
相对应的对象的初始化也有三种方式
     a。不但参数的构造函数的初始化
     b。带参数的构造函数的初始化
     c。复制构造函数的初始化---使用一个现有对象来初始化另一个对象。这里有一个浅拷贝与深拷贝的概念哟!很重要
既然对象的初始化时,需要构造函数,当然死亡时,就应该有析构函数了,析构函数的调用顺序与构造函数的调用顺序永远相反,为什么?看看栈吧!哈哈。
4。类内部的数据变量的不同类型
    只要记住以下几个规律即可
    a。静态数据成员,在类定义的下面,main函数的上面一定要初始化。
    b。静态数据成员为所有的对象公有,最经典的例子就是对象计数器了。
    c。类内如果定义了常数据成员,就是数据成员的前面有关键字const,那么它的初始化必须放在构造函数的初始化列表中,为什么?因为常量一出生就要有值,而且不允许修改,没办法在构造函数内部赋值呀!明白了吧!
    d。类内包含一个另外一个类的对象时,有点麻烦,分开讲
          1。我称内部包含的这个类对象为内含类对象。
          2。内含类对象的初始化必须放在构造函数的初始化列表中。
          3。内含类对象与包含它的类对象的构造函数的顺序是:内含类的构造函数--->外部类的构造函数
5。类内部的成员函数的不同类型
    a。静态成员函数在对象还没有出生的时候已经存在,所以可以通过类名调用,类名::方法名()
    b。静态成员函数严禁对类的非静态数据操作
    c。常对象、常成员函数
         1。常成员函数的定义时,const不能放在前面,而是放在函数定义()的后面,标志着const限制的是函数里面的操作,这样常成员函数在内部就不能改变对象的数据成员了,只能读取。
         2。常对象只能调用常成员函数,一般对象即可以一般函数,而且可以调用常成员函数,但是一般函数的优先级要高于常成员函数。
6。运算符的重载
     a。作为内部函数重载---有一个参数,并且函数不能使用带有缺省值参数的函数
     b。作为友元函数重载---有两个参数
阅读(651) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~