f(sixleaves) = sixleaves

重剑无锋 大巧不工

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  95 随笔 :: 0 文章 :: 7 评论 :: 0 Trackbacks

1.创建对象:

     在java中创建对象只能用new才行,返回的是引用类型,所以对象名其实是引用。而C++中的对象创建不一样,C++可以用指针存对象,相当于引用。也可以直接用类标识符来创建对象。如Person是类,Person a,b;在C++中就创建了两个对象,在java中是Person对象的引用。

2.C++中了this指针:

     C++中的this指针和java中的一样。在C++中,this指针指向当前对象,this指针隐含在每个成员函数之中,其类型是class className *.

     内部机制:

     在C++中访问数据成员都是隐含的使用this指针操作的。需要注意的是。

     1.this指针是const类型,不可改变。

     2.this指针针对对象,所以静态成员是没有this指针的。

3.构造函数和析构函数

     构造函数就不说了,只说下默认构造函数就死className() {},默认会生成。但是如果你自己定义了构造函数,而且不是定义成默认构造函数,就要在定义一下默认构造函数,不然创建对象时候必须指定参数,不能用无参数的。

     析构函数,就是用来在对象要销毁时候,回收一些对象自己向系统申请的内存。析构函数调用完后,系统才清除对象本身占据的内存。

      Tips:

       1.析构函数不能重载,只有一种形式~className() {},这是和构造函数的区别

       2.三种情况下调用析构函数,对象离开局部作用域后,撤销对象触发,程序终止,触发;delete运算符回收new创建的对象触发;临时匿名函数使用完毕;

4.拷贝构造函数和单参构造函数

        (1)拷贝构造函数,其实就是构造函数中的单参数形式的构造函数,只是其参数比较特别,是对自身同类对象的引用。拷贝构造函数在一下几个的方会用到。

         Date a;Date b(a);//调用的就是拷贝构造函数

         Date b = a;//调用的也是拷贝构造函数

         function(Date d){….};function(a);//调用的也是拷贝构造函数(先创建Date类的匿名对象,然后调用拷贝构造函数)

         Date c = function(a);//这边function返回Date对象,也是调用拷贝构造函数(没有创建匿名对象)

         (2)单参构造函数

          单参数构造函数。其实拷贝构造函数也是单参构造函数。但是我将他们区别开来,主要是单参构造函数,主要是用在,隐式的类型转换上。

          如你定义了一个Integer类,直接Integer a = 1;是会出错的。因为1不能自动或者隐含的转换成Integer对象,所以这时候你就要定义

          单参数构造函数,用来让自动转换,在java中称为包装。由于是构造函数,参数中的类型就是那个要转换的类型。其它和基本构造函数一样。

5.静态成员

        静态成员又分为静态数据成员和静态函数成员。C++中的静态函数成员和java也没区别。主要是静态数据成员。所以我们总结下静态数据成员

      (1)静态数据成员和类共存亡而不是和对象。

      (2)静态数据成员在类加载时候分配空间并进行初始化,而不是在对象加载时候。所以静态数据成员默认初始化为0。

             重点是:类中的静态数据成员知识一份声明,必须在类外重新定义并初始化静态数据成员。

      (3)类外通过类作用域运算符::访问静态数据成员。

6.const用法

        (1)const成员函数,这时候const加载函数名后面 {}之前。表示函数不会改变当前对象的状态,而且只能调用const成员函数。(养成习惯,能加尽量加)

               Tips:这里const也是函数签名的一部分。

        (2)const对象,表示常量对象。

        (3)const形参,表示函数中不会改变该形参。注意:常量对象,只能调用const成员函数,因为这才能保证状态不被改变,同时这样保证了他就是常量对象。

                Tips:这里const也是函数签名的一部分。

         (4)const返回值,说明返回值是不可以改变的。

以上这些都是总结,不是写给没基础的人看的。只是为了方便整理和记忆。

posted on 2014-09-04 17:18 swp 阅读(280) 评论(0)  编辑 收藏 引用 所属分类: program language

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理