静态函数调用

静态函数调用静态函数 include iostream h classPoint public voidoutput 非静态成员函数 staticvoidin 静态成员函数 调用 1 非静态成员函数和非静态成员属于对象的方法和数据 也就是先产生类的对象 然后通过类的对象去引用 voi iostream h

静态函数

#include  
     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  
     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  
     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();//编译成功。 } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220145.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午9:08
下一篇 2026年3月17日 下午9:08


相关推荐

  • 模电基础知识点小结[通俗易懂]

    模电基础知识点小结[通俗易懂]第一章常用半导体器件在本征半导体中加入三价元素可形成P型半导体。(五价磷元素形成N型)当PN结加正向电压时,空间电荷区将(变窄)。PN结的单向导电性:在PN结两端加正向电压时,内电场被削弱,空间电荷区变窄,有利于多子扩散,不利于少子漂移,PN结处于导通状态;当在PN结两端加反向电压时,内电场增强,空间电荷区变宽,有利于少子漂移,不利于多子扩散,PN结处于反向截止状态。当二极管外加正向电压增大时,其动态电阻增大。(×)要使稳压管的稳压,其工作区为(反向击穿区)。稳压管与普通二极管的

    2022年6月20日
    104
  • 助眠神器!一款开源无广告的安卓白噪音应用!

    助眠神器!一款开源无广告的安卓白噪音应用!

    2026年3月12日
    3
  • PyCharm写Tensorflow简单程序

    PyCharm写Tensorflow简单程序Tensorflow 基本概念使用图 graphs 来表示计算任务 在被称为会话的 Session 的 context 中执行图 tensor 表示为数据 Variable 表示状态 通过使用 feed 以及 fetch 进行任意的操作 图 graphs 表示任务 一个 graphs 中的节点成为一个操作 op operation 一个 op 会获得 0 个或多个数据 Tensor 同时会产生 0 个或多个数据 Ten

    2026年3月27日
    3
  • JAVA中读写文件操作

    JAVA中读写文件操作java文件读取有两种类型,我这里的是字节流的读取操作packagetest1;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importja…

    2022年7月14日
    21
  • android singleTask

    android singleTask本文载自http://blog.csdn.net/wang_zun_ren/article/details/6823257现有2个项目,taskA、taskB。taskA负责调用taskB中指定的界面。taskB中有3个界面,a、b、c,每个界面显示它所在的taskid。SingleTask:其中b界面被声明为SingleTask。先运行tas

    2022年6月26日
    27
  • @RequestParam注解详解

    @RequestParam注解详解@RequestParam是传递参数的.@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。publicStringqueryUserName(@RequestParamStringuserName)在url中输入:localhost:8080/**/?userName=zhangsan请求中包含username参数(如/requestparam1?userName=…

    2025年7月10日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号