静态函数和静态成员

来源:互联网 发布:php获取qq信息 编辑:程序博客网 时间:2024/05/17 19:20

静态成员:

  声明: static 类型 变量名;

  作用域:所在类,不属于任何一个类对象。

  存在意义:提供一种“全局”变量机制;

  访问方法:如果是public:在类外通过对象或者通过类名;如果是private:需要通过类的共有函数或者静态成员函数调用;

  赋值定义:必须赋初值,赋初值只能在类外(不论是private,public都可以)格式为   类型  类名::静态成员变量=初值;如果不赋初值造成的后果就是链接

                      不成功,究其原因就是不赋初值意味着只是纯粹的声明没有定义,就如同一个函数只要头文件,但是没有函数体一样。


静态函数:

  声明:static 返回值 函数名 参数列表;

  作用域:所在类,不属于任何一个类对象;

  访问方法:同static成员;

  存在意义:调用静态成员,实现数据的封装;当然非静态成员函数也可以调用静态成员,只是使用非静态成员函数的话前提就是需要创建一个对象;再是可以

                      作为回调函数存在,因为静态成员函数如果是public的则就是全局的。(欢迎各位留言说明静态函数存在的意义)



参考类定义

#include <iostream>
using namespace std;


class static_demo
{
   public:
    static_demo(int init);
   private:
    static int private_a;
   public:
    static int public_a;
   public:
    int a;
    static void setPrivateStaticValue(int value);
    int getPrivateStaticValue();
};
void static_demo::setPrivateStaticValue(int value)
{
        private_a = value;
}
int static_demo::getPrivateStaticValue()
{
        return private_a;
}
static_demo::static_demo(int init)
{
        private_a = init;
}
int static_demo::public_a = 100;
int static_demo::private_a = 10000;




int main()
{
  cout<<"static public_a "<<static_demo::public_a<<endl;
  static_demo  static_instance(1000);
  static_instance.setPrivateStaticValue(10);
  cout<<"static_instance.private_a"<<static_instance.getPrivateStaticValue()<<endl;
  cout<<"publi_instance.public_a"<<static_instance.public_a<<endl;
  return 0;
}


0 0
原创粉丝点击