c++ primer第12章类的一些知识点总结

1:关于inline函数

  在类定义体内部定义的成员函数即为inline函数,假如说我们想定义一个成员函数为inline类型,那么可以这样做。声明为inline类型,并且函数的实现和类的定义放在一个文件中(提倡这样做),并且定义时也要指明是inline类型的。

//Example.h

class A{

    void x(){……} //这是inline函数

    inline void y();  //声明为inline类型的函数

};

inline void A:;x(){ ……}  //在定义时仍然要指定是inlien类型的,并且提倡和类定义体放在一个文件中

 

2.关于类声明和类定义

  在使用类之前必须要有类声明(最少的)。如果只有类声明而没有类定义,那么它是一个不完全类型

  class X;//类声明

  class X{……}; //类定义

  不完全类型的使用是受限制的。 不能定义该类型的对象,只能定义该类型的指针或者引用,或者是定义(注意,不是声明)一个函数,这个函数的形参或者返回类型可以使不完全类型。。

 

3.const成员和const重载

  类的非static成员函数默认是有this指针的,加入成员函数是const型,那么它的是真默认是const类型的,

  class A{

    void test() const {……}

  };

  则在test函数中this指针的形式应该是 const A* thsi=&对象,所以不能再const成员函数中去改变对象的数据成员.

  

  基于const的函数重载有两种形式: 1: 基于成员函数是否为const,可以重载为一个成员函数 2:基于指针形参是否只想const可以重载一个函数

  void f(int*);

  void f(const int*);//这两个是重载函数

4.类作用域中名字查找

  class A{

     In x;

   typedef int In;  //这是错误的

  };

 

5.隐式类型转换

  构造函数的隐式类型转换可以通过explicit关键字终止

 

6.static成员

  static成员的定义时在类定义外部,和类的成员函数同级别。也可以把它看做是类的成员函数的定义,因此它可以使用类的private成员

  const static成员可以在类的定义体中指明它的值,但是只限于是常量表达式!!

  static变量在类的定义体外部初始化的时候不需指明static关键字,否则错误。

  

posted on 2012-04-27 10:26  紫金树下  阅读(171)  评论(0编辑  收藏  举报