现在的位置: 首页 > 综合 > 正文

C++中关于类的概念的学习思路

2013年10月10日 ⁄ 综合 ⁄ 共 1674字 ⁄ 字号 评论关闭

 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。作为友元函数重载---有两个参数

 

 

 

 

 

抱歉!评论已关闭.