类中申明的函数相对于类来说有三层意思:
1.有this指针
2.函数在类的作用区域中
3.可以访问类中私有部分

4.可以被继承

非静态成员函数具有1234
静态成员函数具有234
友元函数具有3

静态成员函数与友元函数的区别只是作用区域的不同
友元函数具有全局性 不慎使用可能会造成函数同名冲突
虽然命名空间能解决一定的问题,但我还是偏向使用静态成员函数= =

1.静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。举例如下:
class base{
static int func1();
int func2();
};

int (*pf1)()=&base::func1;//普通的函数指针
int (base::*pf2)()=&base::func2;//成员函数指针

2.静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。

3.静态成员函数不可以同时声明为 virtual、const、volatile函数。举例如下:
class base{
virtual static void func1();//错误
static void func2() const;//错误
static void func3() volatile;//错误
};

最后要说的一点是,静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问。

友元函数、类的非静态成员函数、静态成员函数的区别相关推荐

  1. C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)

    1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...

  2. 为什么C++静态static函数不能访问非静态成员

    原因如下: 1. 静态static成员函数不同于非静态函数,它只属于类本身,而不属于每一个对象实例.静态函数随着类的加载而独立存在.与之相反的是非静态成员,他们当且仅当实例化对象之后才存在.也就是说, ...

  3. 类的静态成员与静态成员函数

    静态成员 即定义出一些成员与类本身直接相关,而不是与类的各个对象保持关联. 1,声明静态成员 在成员的声明之前加上关键字static使得其与类关联在一起 class Test { public:    ...

  4. C++ 类的静态成员及静态成员函数

    https://www.cnblogs.com/codingmengmeng/p/5906282.html C++ 类的静态成员及静态成员函数 对象与对象之间的成员变量是相互独立的.要想共用数据,则需 ...

  5. qt 静态成员变量_Qt 静态成员函数的调用非静态成员变量,非静态成员函数

    在多人开发的项目中,一些通用的工具类接口可以用静态成员函数.方便调用,并且不容易调用错误. 静态成员函数不传递this指针(不能->),不识别对象个体,所以经常用于对静态数据成员进行操作.不能操 ...

  6. 【C++静态成员函数不能调用非静态成员变量】

    C++静态成员函数不能调用非静态成员变量 静态成员函数 this指针 C++静态成员函数不能调用非静态成员变量原因 为什么要引入static 什么时候用static 致谢 静态成员函数 定义:静态成员 ...

  7. c++,static 静态成员变量 / 静态成员函数

    静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...

  8. 一般函数指针和类(非MFC)的成员函数指针

    函数指针是通过指向函数的指针间接调用函数.函数指针可以实现对参数类型.参数顺序.返回值都相同的函数进行封装,是多态的一种实现方式.由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的 ...

  9. C++静态成员和静态成员函数

    类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动.  静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体 ...

最新文章

  1. JDBC+Servlet+JSP整合开发之29-JSP表达式语言(EL)
  2. Windows 家族的十二种常用密码破解法
  3. STM8L探索套件学习笔记(转)
  4. 虚拟机类加载机制---类加载器
  5. Lucene6.5.0 下中文分词IKAnalyzer编译和使用
  6. python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法
  7. Spring Boot(2) 配置文件
  8. vue el-tree 同时向后台传递选中和半选节点数据 (回显数据勾选问题已解决)
  9. 将dll制作成控件_丹江口水库发现1.68米长巨型鱤鱼,将被制作成标本展出,吃货们哭了...
  10. android java静态库,Android NDK开发相关知识集合
  11. ExtJS 4中动态加载的路径设置
  12. linux opendir路径_Linux C/C++ ----目录文件的操作(opendir,readdir,closedir)
  13. WIFI密码破解技巧---简单之成功率极高
  14. 如何用python计算年龄_python根据出生日期计算年龄的代码
  15. eWebEditor编辑HTML,eWebEditor编辑器免费版
  16. 图像宽度所占字节必须是4的倍数详解
  17. tableau-计算一个月内的第几周
  18. Codeforces Round #818 (Div. 2)
  19. 华为云服务器 端口无法访问——配置安全组
  20. Cocos2d-x 3.0正式版 HelloWorld分析

热门文章

  1. Java多线程复习:1(进程和线程、并发和并行)
  2. 南昌大学计算机专业高数课本,南昌大学高等数学期末考试.pdf
  3. impala 本年格式化时间_hive,hbase,impala之间的对比
  4. ElasticSearch安装使用 操作索引
  5. solr 实现对经纬度的查询
  6. spark为什么比hive速度快?
  7. luogu P1280 尼克的任务 序列DP
  8. APP之红点提醒三个阶段
  9. Servlet,过滤器,监听器,拦截器的区别
  10. lombox的用法(省去了set/get/NoArgsConstructor/AllArgsConstructor)