zoukankan      html  css  js  c++  java
  • static 成员函数

    和静态数据成员一样,静态成员函数是所有对象共享的,不是单独属于某一个对象,由于静态成员函数没有传递this指针,故static member function 只能访问static成员,不能访问非static 成员。但是非static却可以访问static 成员。

     1 #include<iostream>
     2 using namespace std;
     3 class X{
     4     int i;
     5     static int j;
     6 public:
     7     X(int ii=0) :i(ii){
     8         j = i;//non-static member function can access static member function or data
     9     }
    10     int val()const{ return i; }
    11     static int incr(){
    12         //i++; Error:static member function can not access non-static member data
    13         return ++j;
    14     }
    15     static int f(){
    16         //!val()    Error:static member function can not access non-static member function
    17         return incr();
    18     }
    19 
    20 };
    21 int X::j = 0;
    22 int main(){
    23     X x;
    24     X* xp = &x;
    25     x.f();
    26     xp->f();
    27     X::f();
    28     system("pause");
    29     return 0;
    30 
    31 }

    对象在访问静态成员时,可以通过点运算符和箭头运算符。这样就把静态成员函数与某一个对象相连接了,也可以直接用  className::static member fucntion name 的方式访问。

    有时可以把构造函数设置成私有的,如下面的例子

     1 class Egg{
     2     static Egg e;
     3     int i;
     4     Egg(int ii) :i(ii){}
     5     Egg(const Egg&);//prevent copy-construction
     6 public:
     7     static Egg* instance(){ return &e; }
     8     int val()const{ return i; }
     9 };
    10 
    11 Egg Egg::e(47);
    12 int main(){
    13     //! Egg x(0); Error can't create an Egg
    14     cout << Egg::instance()->val() << endl;
    15     system("pause");
    16     return 0;
    17 
    18 }

    为了不让类可以拷贝创建对象,增加了一个私有的拷贝构造函数

    Egg(const Egg&);//prevent copy-construction
    这样类就不可以如下的创建对象了
    Egg e=*Egg::instance();
  • 相关阅读:
    Nim or not Nim? hdu3032 SG值打表找规律
    Maximum 贪心
    The Super Powers
    LCM Cardinality 暴力
    Longge's problem poj2480 欧拉函数,gcd
    GCD hdu2588
    Perfect Pth Powers poj1730
    6656 Watching the Kangaroo
    yield 小用
    wpf DropDownButton 源码
  • 原文地址:https://www.cnblogs.com/cplinux/p/5612034.html
Copyright © 2011-2022 走看看