精华内容
下载资源
问答
  • 静态函数

    千次阅读 2019-05-14 16:29:20
    不会被访问或者修改任何对象数据成员,可声明为静态函数。 普通的静态函数只能在文件所在的编译单位内使用。静态函数没有this指针,不能被其他文件所用,其他文件中 可以定义相同名字的函数。 类的静态成员函数...

    静态成员函数的声明在类体的函数声明前加关键字static,不能声明为const或者volatie之外。在类中如果函数调用的结果

    不会被访问或者修改任何对象数据成员,可声明为静态函数。

    普通的静态函数只能在文件所在的编译单位内使用。静态函数没有this指针,不能被其他文件所用,其他文件中

    可以定义相同名字的函数。

    类的静态成员函数可以访问类的私有成员,但是静态成员函数只能直接访问类的静态私有成员。可以通过自定义的一些

    特殊方法比如宏替换访问类的非静态私有成员。

    展开全文
  • 首先,静态函数只有当程序结束的时候才从内存消失,生命周期长。而非静态则是动态加载到内存,不需要的时候就从内存消失。 而调用类中的静态函数,无需创建对象就可以调用了,因为当类初始化的时候,就已经加载了...

    首先,静态函数只有当程序结束的时候才从内存消失,生命周期长。而非静态则是动态加载到内存,不需要的时候就从内存消失。

    而调用类中的静态函数,无需创建对象就可以调用了,因为当类初始化的时候,就已经加载了静态函数,所以静态函数要比对象加载的早,对象只有被创建的时候才会在堆内存中创建空间。

      另外,静态函数中不能使用非静态变量,静态方法不可以定义this,super关键字(因为静态比对象先加载,而this必须首先加载,所以导致冲突,不能使用);非静态函数可以访问静态变量。


      最后呢,说明一下创建对象的加载。

      A a = new B();

    1:B.class 加载进方法区

          2:堆内存开辟空间,实例变量进行默认初始化,显示初始化。

          3:内存地址传给变量a,栈和堆建立连接


    静态函数和非静态函数的使用Demo

    public class PersonDemo {
        public static void main(String[] args) {
           // 访问静态成员
           // 直接通过类名来调用
           String country = Person.country;
           System.out.println(country);
           // 通过对象.成员的形式访问
           Person p1 = new Person("jack", 20, "男");
           p1.country = "US";
           p1.speak();
        }
    }
    class Person {
        String name;
        int age;
        String gender;
        // static 修饰成员变量
        static String country = "CN";
        static {
           System.out.println("这是静态代码块");
        }
        {
           System.out.println("这是构造代码块");
        }
        Person() {
           System.out.println("无参数构造");
        }
        Person(String name, int age, String gender) {
           this.name = name;
           this.age = age;
           this.gender = gender;
           System.out.println(" 有参数构造");
        }
        // 非静态方法
        void speak() {
           // 非静态方法可以访问静态成员
           System.out.println("国籍:" + country);
           System.out.println("国籍:" + country + " 姓名:" + name + " 性别:" + gender + " 年龄:" + age + " 哈哈!!!");
           // 非静态方法可以调用静态方法。
           run();
        }
        // 静态方法
        static void run() {
           // 静态方法只能访问静态成员变量。
           System.out.println("国籍:" + country);
        }
    }



    展开全文
  • link中可以调用abstrac中的静态函数,能不能把成员函数当成静态函数
  • C#静态函数

    千次阅读 2019-07-09 22:48:51
    //一.新建Person类 ...面对对象静态函数和非静态函数的区别 { //新建个Person类 public class Person { private static string _name; //静态字段 public static string Name //属性,对字体的限定...

    原地址:https://blog.51cto.com/12679593/2385682
    //一.新建Person类
    namespace _38.面对对象静态函数和非静态函数的区别
    {
    //新建个Person类
    public class Person
    {
    private static string _name; //静态字段
    public static string Name //属性,对字体的限定
    {
    get { return Person._name; }
    set { Person._name = value; }

    }
    
    private char _gender;   //字段
    public char Gender    //属性,对字体的限定
    {
        get { return _gender; }
        set { _gender = value; }
    }
    
    public void M1()    //方法
    {
        Console.WriteLine("我是一个非静态方法!");
    }
    
    public static void M2()   //方法
    {
        Console.WriteLine("我是一个静态方法!");
    }
    

    }
    }

    //二.主函数
    namespace _38.面对对象静态函数和非静态函数的区别
    {
    class Program
    {
    static void Main(string[] args)
    {
    //以下是重点,区别实例成员和静态成员的调用
    //调用实例成员,先new一个对象,然后用对象去调用
    Person p = new Person();
    p.M1();
    //静态方法调用,直接类名去点方法名
    Person.M2();

        Console.WriteLine();
        Console.ReadKey();
    
    }
    

    }
    }
    __~~

    类的实例不能访问类的静态方法,因为静态方法本身就是一个实例了,不需要再次实例,直接访问即可

    展开全文
  • 静态函数调用

    千次阅读 2020-01-09 15:48:09
    静态函数 #include <iostream.h> class Point { public: void output()//非静态成员函数 { } static void init()//静态成员函数 { } }; 调用1:非静态成员函数和非静态成员属于对象的方法和数据,也...

    静态函数

    #include <iostream.h>
    class Point
    {
     public:
         void output()//非静态成员函数
         {
         }
        static void init()//静态成员函数
        {
        }
    };
    

    调用1:非静态成员函数和非静态成员属于对象的方法和数据,也就是先产生类的对象,然后通过类的对象去引用。

    void main()
    {
      Point pt;
      pt.init();//编译成功
      pt.output();//编译成功
     }
    

    调用2:静态成员函数和静态成员变量属于类本身,在类加载的时候,即为它们分配了空间,所以可通过类名::函数名,类名::变量名来访问。

    void main()
    {
      Point::init();//编译成功。不属于某个具体的对象,Point类没有构造对象之前,init已经存在,即分配了代码区空间。
      Point::output();//编译失败。非法调用非静态成员函数,即Point构造对象后,output才存在。
     }
    

    调用3:静态成员函数只能调用静态成员变量。

    #include <iostream.h>
    class Point
    {
     public:
         void output()//非静态成员函数
         {
          x = 0;   
          y = 0;
         }
        static void init()//静态成员函数
        {
          x = 0;   //静态成员函数调用非静态成员
          y = 0;
        }
     private:
        int x, y; //非静态成员
    };
    void main()
    {
      Point::init();//编译失败。静态成员函数不能调用非静态成员的成员函数和成员变量。init已存在,x,y不存在。
      Point pt;//构造pt对象时,给x,y分配内存空间,给output分配代码区空间。
      pt.output();//编译成功。
     }
    

    函数之间的引用许可,内存模型: 无论采什么样的操作,程序代码都是在内存中运行的,只有在内存中占有了一席之地,我们才能够访问它。如果一个成员函数或成员变量还未在内存中产生,结果是无法访问它的。

    调用4:类外初始化静态成员变量。非静态成员函数可以调用静态成员函数。

    #include <iostream.h>
    int Point::x = 0;
    int Point::y = 0;//类外初始化静态成员变量
    class Point
    {
     public:
         void output()//非静态成员函数
         {
           init();  //非静态成员函数调用静态成员函数
         }
        static void init()//静态成员函数
        {
          x = 0;   //静态成员函数调用静态成员
          y = 0;
        }
     static int x, y;   //静态成员变量
    };
    void main()
    {
      Point::init();//编译成功。
      Point pt;
      pt.output();//编译成功。
    }
    
    展开全文
  • link中的委托为什么可以调用静态函数?不是说成员函数内不能直接调用静态函数么?
  • QT 类静态函数作为回调函数

    万次阅读 2020-05-26 08:41:05
    (二) 今天使用类的静态函数作为回调函数,具体方式如下, (1) 在头文件中定义类 class CardDataDispose : public QObject { Q_OBJECT public: static void callback(int device, int msg, i...
  • 静态函数的作用

    千次阅读 2019-01-27 19:13:43
    用关键字“static”修饰的函数称为静态函数,和静态变量的存储方式都是静态存储,但又有所区别。现在主要讲静态函数: 1、用static修饰的函数,系统会给程序分配一块一直存在并能被使用的内存,避免了函数在调用时...
  • C++ 静态函数与虚函数的区别

    千次阅读 2020-03-02 19:57:51
    经常在网上看到大家在讨论静态函数与虚函数的区别,往往可以看到统一的答案是:静态函数在编译的时候就已经确定运行时机,虚函数在运行的时候动态绑定。虚函数因为用了虚函数表机制,调用的时候会增加一次内存开销。 ...
  • C# 静态类和静态函数

    千次阅读 2016-07-30 15:53:47
    C# 翻译msdn文档 静态类和静态函数
  • C++虚函数 - 静态函数能否为虚函数 .

    千次阅读 2019-05-07 15:05:57
    1.virtual与静态函数 C++中,静态成员函数不能被声明为virtual函数。 例如,下面的程序会编译失败。 class Test { public: // 编译错误:static成员函数不能声明为virtual virtual static void fun() { } }; 同样地...
  • 静态函数,非静态变量与静态函数,静态变量 一、函数 函数的引入可以减少程序的目标代码,实现程序代码的共享。但是,函数调用也需要一些时间和空间方面的开销,因为调用函数实际上将程序执行流程转移到被调...
  • Q10:静态函数和虚函数的区别

    千次阅读 2019-06-20 23:24:14
    静态函数与虚函数。
  • Java中的静态变量和静态函数

    千次阅读 2015-03-11 15:50:23
    Java中的静态变量和静态函数(方法)和C++中也类似。有几点需要重新复习一下: 1)如果想让一个类的所有对象共享数据,可以使用静态变量;如果想共享函数,可以使用静态函数。 2)如果某个对象修改了静态变量...
  • 问:内联函数、静态函数和普通函数之间的区别?答:1.内联函数和普通函数最大的区别在于内部的实现方面,当普通函数在被调用时,系统首先跳跃到该函数的入口地址,执行函数体,执行完成后,再返回到函数调用的地方,...
  • 什么是静态函数

    千次阅读 2019-05-17 15:36:00
    1. 优点: 静态函数会被自动分配在一个一直使用的存储区,直到...(例如:英飞凌TC297内核中的程序高速暂存存储器PSPR用于放置静态函数,提高程序执行效率)关键字“static”,译成中文就是“静态的”,所以内部函...
  • 静态函数与动态函数的区别

    千次阅读 2018-04-12 11:29:01
    静态函数只有当程序结束的时候才从内存消失。而非静态则是动态加载到内存,不需要的时候就从内存消失。 静态成员函数不需要类实例化就能调用的
  • 静态函数与普通函数的调用规则

    千次阅读 2018-03-06 22:37:31
    static函数与普通函数的区别:  用static修饰的函数,本限定在本源码文件中,不能被...普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数...
  • C++虚函数(4) - 静态函数能否为虚函数
  • 类的静态函数只能访问类的静态成员变量 类的静态函数只能访问类的静态成员变量 类的静态函数只能访问类的静态成员变量 类的静态函数只能访问类的静态成员变量 转载于:...
  • c++调用静态函数的方法

    千次阅读 2020-08-09 13:09:25
    今天在写c++程序时,发新现在的gcc和vc++对于静态函数的调用方式有所改变,在旧标准的c++中,调用类的静态方法只能用类名::函数名的方式,在新的标准中,类的对像也可以像调用类的方法一样调用静太函数。示例如下: ...
  • 1)全局静态函数只在本编译单元有效。 2)类静态函数,对比普通成员函数,没有this指针,不能访问非static成员。 3)要说二者相同点,都是c++名字控制的手段:全局静态函数被局限在一个编译单元,通俗的将就是在...
  • 调用静态函数时,是否调用构造函数

    千次阅读 2019-02-26 15:12:35
    调用静态函数时,不会调用构造函数
  • 从声明方式来看: 普通成员函数是最一般的方法,即 class Foo: def plain_func(): pass 类成员函数是 ...静态函数是 class Foo: @staticmethod def static_func(): pass 从调用方式来看,普通函数...
  • Python:普通成员函数、类成员函数、静态函数 Python 中的类也是一个普通对象,如果需要直接使用这个类,例如将类作为参数传递到其他函数中,又希望在实例化这个类之前就能提供某些功能,那么最简单的办法就是使用 ...
  • 1、定义静态变量 2、静态函数 3、静态代码块
  • C/C++中内联函数与静态函数

    千次阅读 2016-03-27 00:56:11
    C++中的内联函数与静态函数静态函数静态函数的定义静态函数又称为内部函数。在C/C++中,定义的函数默认都是全局的(相对于多个文件的源程序)。而在函数的前面加上static关键字可以改变函数的作用域,即将函数的作用域...
  • 静态函数为什么不能是虚函数?

    千次阅读 2016-06-26 16:33:33
    而类的普通成员函数(包括虚函数)在编译时加入this指针,通过这种方式可以与对象捆绑,而静态函数编译时不加this,因为静态函数是给所有类对象公用的,所以没有在编译时加this,所以无法与对象捆绑,而虚函数就是...
  • 静态函数的优点 static

    千次阅读 2016-01-04 13:39:15
    静态函数 在函数的返回类型前加上关键字static,函数就被定义成为静态函数。  函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。 定义静态函数的好处:  ...
  • 关于静态函数只能调用静态变量

    千次阅读 2017-08-14 00:03:24
    有次面试的时候被問到,说为什么静态函数只能调用静态变量,我一下懞了,平时只知道这样記着,所以也只能老实回答。面试完后补习了下这块的知识。 推荐一篇很好的文章,关于C++中的this指针的:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,071,404
精华内容 428,561
关键字:

静态函数