当前位置: 首页 > news >正文

转载:什么时候可以不用实例化对象就可以调用类中成员函数

http://blog.csdn.net/dwb1015/article/details/32933349

对于一个类A,对于这个定义((A*)0)或者 A *p = NULL 都可以调用类中的那些成员函数。

        第一种情况:非静态成员函数没有使用类的非静态数据成员,调用的其他非静态成员函数也不能使用类的非静态数据成员

[cpp]  view plain  copy
 
 print?
  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. class A  
  6. {  
  7. public:  
  8.     void fun1()  
  9.     {  
  10.         cout<<"fun1"<<endl;  
  11.   
  12.         fun2();  //如果fun2函数内部调用了数据成员a,则会调用失败  
  13.     }  
  14.   
  15.     void fun2()  
  16.     {  
  17.         cout<<"fun2"<<endl;  
  18.         //a = 1;  
  19.     }  
  20.   
  21. private:  
  22.     int a;  
  23.     int b;  
  24. };  
  25.   
  26.   
  27. int main()  
  28. {  
  29.     A *p = NULL;  
  30.     p->fun1();  
  31. }  

 

       第二种情况:非静态成员调用类的静态数据成员。

[cpp]  view plain  copy
 
 print?
  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4.   
  5. class A  
  6. {  
  7. public:  
  8.     void fun1()  
  9.     {  
  10.         cout<<"fun1"<<endl;  
  11.         a = 3;  
  12.         cout<<"a = "<<a<<endl;  
  13.     }  
  14.   
  15. private:  
  16.     static int a;  
  17.     int b;  
  18. };  
  19.   
  20. int A::a = 0;  
  21.   
  22.   
  23. int main()  
  24. {  
  25.     A *p = NULL;  
  26.     p->fun1();  
  27. }  


 

        第三种情况:类的静态成员函数

[cpp]  view plain  copy
 
 print?
    1. #include <iostream>  
    2.   
    3. using namespace std;  
    4.   
    5. class A  
    6. {  
    7. public:  
    8.     static void fun1()  
    9.     {  
    10.         cout<<"fun1"<<endl;  
    11.         a = 3;  
    12.         cout<<"a = "<<a<<endl;  
    13.     }  
    14.   
    15. private:  
    16.     static int a;  
    17.     int b;  
    18. };  
    19.   
    20. int A::a = 0;  
    21.   
    22.   
    23. int main()  
    24. {  
    25.     A *p = NULL;  
    26.     p->fun1();  
    27. }  

转载于:https://www.cnblogs.com/penghuster/p/7070586.html

相关文章:

  • Android之MediaPlayer播放一般音频与SoundPool播放短促的音效
  • 九的余数
  • Android之使用摄像头拍照
  • luogu_2142 高精度减法
  • Android之录制视频文件
  • 在ASP.NET应用中执行后台任务
  • Gamma校正问题
  • Brendan Gregg ----Linux Performance Tools NEWS
  • 打印信息
  • Android中使用手势识别功能
  • hibernate之初学增删改查
  • Android之使用传感器获取相应数据
  • css实现文字两端对齐
  • jQuery高性能自己定义滚动栏美化插件
  • Visual Code中的智能提示
  • #Java异常处理
  • django开发-定时任务的使用
  • Fabric架构演变之路
  • golang 发送GET和POST示例
  • javascript 总结(常用工具类的封装)
  • Koa2 之文件上传下载
  • leetcode386. Lexicographical Numbers
  • Linux后台研发超实用命令总结
  • Linux快速复制或删除大量小文件
  • MYSQL 的 IF 函数
  • Mysql数据库的条件查询语句
  • PHP CLI应用的调试原理
  • react 代码优化(一) ——事件处理
  • Spring框架之我见(三)——IOC、AOP
  • Sublime text 3 3103 注册码
  • Theano - 导数
  • vue 配置sass、scss全局变量
  • Vue2.x学习三:事件处理生命周期钩子
  • vue数据传递--我有特殊的实现技巧
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 前端技术周刊 2019-02-11 Serverless
  • 强力优化Rancher k8s中国区的使用体验
  • 日剧·日综资源集合(建议收藏)
  • 如何编写一个可升级的智能合约
  • 系统认识JavaScript正则表达式
  • 用Python写一份独特的元宵节祝福
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (vue)页面文件上传获取:action地址
  • (ZT)薛涌:谈贫说富
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (三) prometheus + grafana + alertmanager 配置Redis监控