静态成员 内联成员函数 const对象和const成员函数

来源:互联网 发布:八年级行知天下答案 编辑:程序博客网 时间:2024/05/21 21:42

1 静态成员

    static数据成员

     (1)   static数据成员属于类,而不属于对象;
     (2)static数据成员也是具有访问限制的;
       在类外只能访问公有的static数据成员,且访问方式为:
                 类名::static公有数据成员
        在类内可以访问所有的static数据成员,采用直接访问的方式。
     (3)   若要初始化类的static数据成员,一般是在类定义之外进行。初始化的方式为:
         type 类名::static数据=初始值;

     static成员函数
      (1)成员函数也能被说明为静态的。静态成员函数没有this指针。静态成员函数只属于一个类。
       因此,在类外调用一个公有静态函数,方式为:
             类名::静态公有成员函数名(实参表)
   而在类内,采用直接调用静态成员函数(包括公有的和私有的)的方式。
  (2)静态成员函数没有this指针,因此,若在静态成员函数中访问非静态成员时,必须明确指出该静态成员函数在哪个对象上操作。

         (3)因为STATIC成员不是任何对象的组成部分,所以STATIC成员函数不能被声明为const。

        (4)STATIC函数也不能被声明为虚函数。

2  内联成员函数   

        C++中,宏的概念是作为内联函数来实现的,而内联函数无论在任何意义上都是真正的函数。唯一不同之处是内联函数在适当的地方像宏一样展开,所以不需要函数调用的开销。因此,应该永远不使用宏,只使用内联函数。但为了使之有效,必须使函数体和声明结合在一起。
      任何在类中定义的函数自动地成为内联函数,但也可以使用inline关键字放在类外定义的函数前面使之成为内联函数。

3 const对象和const成员函数
     某些对象是需要修改的,而有些对象是不需要修改的。我们把那些不需要修改的对象称为const对象。例如:
        const  Date  dt(2004,1,1);
声明了类Date的一个const对象,并把该对象初始化为2004年1月1日的时间。
        一个const对象只能访问const成员函数。
         类的成员函数可以通过加const来限定函数对对象的数据成员的修改。定义的方式是在函数头的参数表后面加上const。例如:
     
class Date
  {
     …
     public:
     int GetYear( ) const
      {
         return  year;
      }
      …
  };
        对于在类体之外定义的const 成员函数,必须在它的定义和声明中同时指定关键字const。
        把一个要修改类数据成员的函数声明为const 是非法的,例如:
       class Date
         {
            …
            public:
            int GetYear( ) const
             {
                year=2004;               //错误!
             }
            …
         };
        
         一个const成员函数调用const和非const对象是安全的,不修改数据成员的任何函数都应该把它们声明为const,这样它可以和const对象一起使用。
        应该注意的是,构造函数和析构函数肯定是要修改对象的。

原创粉丝点击