名词解释

构造函数:

  1.构造函数命名和类名完全相同;

  2.有默认构造函数(重载时C++必须有手动写默认构造函数);

  3.构造函数不能被直接调用(显式调用),必须通过new运算符在创建对象时调用;

  4.没有返回值;

  Java,普通函数和构造函数可以同名,但普通函数得有返回值。

----------------------------------------------------------

析构函数:(c++)

  1.与类名相同,函数名前加位取反符~;

  2.不带任何参数,没有返回值;

  3.一个类只能有一个析构函数;

  Java和C#有自动回收机制

----------------------------------------------------------

继承:

  C++:有单继承和多继承;三种继承方式:public, private, protected;

    单继承:class Test : public T1 {};

    多继承:class Test : public T1, private T2 {};

    对于继承class类默认采用private继承,对于struct默认采用public继承,如:

      class Test1{}

      struct Test2{}

      class Test : Test1, Test2 {};  等价与   class Test : private TEst1, public Test2 {};

    public继承:基类的public成员和protected成员作为派生类的成员时,他们都保持原有的状态,private成员依然是私有的,不能被派生类的子类访问;

    private继承:基类的public成员和protected成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问;

    protected继承:基类的public成员和protected成员都作为派生类的保护成员,并且只能被他的派生类成员函数或友元访问;

    

    Java和C#:只有单继承,但可以实现多接口 

----------------------------------------------------------

接口:

  C++:没有接口的概念,可以用纯虚函数实现接口;

  C#:不能有new, public, protected, internal, private, static, abstract, override, vritual 等修饰符,默认为public;(Java默认是public abstract)

     只能声明抽象成员,不能实例化;

     只能包含方法、事件、索引等;

     只能对接口声明;

----------------------------------------------------------

虚函数:

  Java,所有的方法默认为都是虚函数,只有标记为final的方法才是非虚函数。

  C#,对于基类中的任何虚方法必须用virtual修饰,而派生类中由基类继承而来的重载方法必须用override修饰。

  C++,基类必须指出希望派生类重写的哪些函数,定义为virtual的函数是基类期待派生类重写,派生类不用override修饰。基类希望派生类继承的函数不能定义为虚函数。

纯虚函数:

----------------------------------------------------------

抽象类:

  C++:含有虚函数的类是抽象类,不能生成对象;

  Java:类用abstract修饰的类是抽象类,不能生成对象。

----------------------------------------------------------

多态:

  实现多态的方法有:虚函数,抽象类,重载,复写,模板。

----------------------------------------------------------

引用:

  是某一变量的别名,对引用的操作和对变量直接操作一样。声明方法: 类型标识符 &引用名 = 目标变量名;    int &a = b;

    1. &起标识作用,不是求地址运算符

    2. 类型标识符是目标变量的类型

    3. 声明引用时必须同时对其进行初始化

    4. 声明一个引用,不是定义了一个变量,只是一个目标变量的别名,因此引用本身不占用储存单元,系统也不会为其分配,对引用求地址也就是对目标变量求地址

    5. 不能有数组引用,无法建立一个数组的别名,引用只能针对某个元素,而不是若干个元素的集合

深拷贝/浅拷贝:

    1. 没有显示声明拷贝构造函数,编译器会自动生成一个默认的,默认的是浅拷贝

    2. 浅拷贝:不分配新的内存单元,指向同一内存单元,如果原变量的指向的内存单元被析构,那么拷贝的会成为一个野指针,运行会出错误,比如说变量的赋值:int a = b;

      深拷贝:发生复制的时候,会重新分配内存单元,生成新的内存地址,比如说new:  int* a = new int(5);

----------------------------------------------------------

内联函数:

泛型:

重构:

迭代:

序列化:

反序列化:

 

posted @ 2013-02-17 13:11  Marble  阅读(201)  评论(0编辑  收藏