zoukankan      html  css  js  c++  java
  • C++ 类中的static 成员函数

    简介
    同静态成员变量一样,静态成员函数在类里面定义,作用域为整个类,所有类的对象共享静态成员函数

    特征

    由于没有传递this 指针,静态成员函数只能访问static 成员 不能访问非static 成员

    用法

     1 class ex{
     2     private:
     3         int _non_static;
     4         static int _static;
     5     public:
     6         int h(){
     7             return _non_static;
     8         }
     9         static int g(){
    10             //_non_static=0; (不正确) 
    11             //静态成员函数不能访问非静态成员变量 
    12             return _static;
    13          }
    14         static int f(){
    15             //h();        (不正确) 
    16             //静态成员函数不能访问非静态成员函数 
    17             return g();
    18         }
    19 };
    20 int ex::_static= 0;//static 成员变量可以在类外改变 
    21 int main(){
    22     ex var;
    23     ex* pointer=&var;
    24     var.f();//方式一:点运算符 
    25     pointer->f();//方式二:箭头运算符 
    26     ex::f();//方式三: 类名:静态成员函数名 
    27     return 0;
    28 }

    这里要注意:static函数在类内声明、类外定义时,类内要写明static 类外则不能加static关键字,如下,会报错

     1 class ex{
     2     public:
     3         static int f();
     4 };
     5 /*错误的示范 
     6 static int ex::f(){
     7     return 0;
     8 }
     9 */
    10 //应该这样写 
    11 int ex::f(){
    12     return 0;
    13 }
    14 int main(){
    15     return 0;
    16 }

    因为在类体外声明static 会将成员函数作用域扩大到文件,比类的域要大,所以会报错

    [Error] cannot declare member function ... to have static linkage

  • 相关阅读:
    在安卓上用Termux安装sqlmap
    地址转换函数
    字节操作函数
    主机字节序和网络字节序
    20191231 Spring官方文档(Core 1.13-1.14)
    20191230 Spring官方文档(Core 1.12)
    20191230 Tomcat权威指南-读书摘要系列【归档】
    20191230 On Java8【归档】
    20191227 Java8 日期时间API
    20191226 Spring官方文档(Core 1.11)
  • 原文地址:https://www.cnblogs.com/cdsidi/p/12638411.html
Copyright © 2011-2022 走看看