友元函数、类的非静态成员函数、静态成员函数的区别
类中申明的函数相对于类来说有三层意思:
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;//错误
};
最后要说的一点是,静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问。
友元函数、类的非静态成员函数、静态成员函数的区别相关推荐
- C++ 笔记(18)— 类和对象(this 指针、指向类的指针、类静态成员变量和函数)
1. this 指针 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址. this 指针是所有成员函数的隐含参数.因此,在成员函数内部,它可以用来指向调用对象. 友元函数没有 thi ...
- 为什么C++静态static函数不能访问非静态成员
原因如下: 1. 静态static成员函数不同于非静态函数,它只属于类本身,而不属于每一个对象实例.静态函数随着类的加载而独立存在.与之相反的是非静态成员,他们当且仅当实例化对象之后才存在.也就是说, ...
- 类的静态成员与静态成员函数
静态成员 即定义出一些成员与类本身直接相关,而不是与类的各个对象保持关联. 1,声明静态成员 在成员的声明之前加上关键字static使得其与类关联在一起 class Test { public: ...
- C++ 类的静态成员及静态成员函数
https://www.cnblogs.com/codingmengmeng/p/5906282.html C++ 类的静态成员及静态成员函数 对象与对象之间的成员变量是相互独立的.要想共用数据,则需 ...
- qt 静态成员变量_Qt 静态成员函数的调用非静态成员变量,非静态成员函数
在多人开发的项目中,一些通用的工具类接口可以用静态成员函数.方便调用,并且不容易调用错误. 静态成员函数不传递this指针(不能->),不识别对象个体,所以经常用于对静态数据成员进行操作.不能操 ...
- 【C++静态成员函数不能调用非静态成员变量】
C++静态成员函数不能调用非静态成员变量 静态成员函数 this指针 C++静态成员函数不能调用非静态成员变量原因 为什么要引入static 什么时候用static 致谢 静态成员函数 定义:静态成员 ...
- c++,static 静态成员变量 / 静态成员函数
静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...
- 一般函数指针和类(非MFC)的成员函数指针
函数指针是通过指向函数的指针间接调用函数.函数指针可以实现对参数类型.参数顺序.返回值都相同的函数进行封装,是多态的一种实现方式.由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的 ...
- C++静态成员和静态成员函数
类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体 ...
最新文章
- JDBC+Servlet+JSP整合开发之29-JSP表达式语言(EL)
- Windows 家族的十二种常用密码破解法
- STM8L探索套件学习笔记(转)
- 虚拟机类加载机制---类加载器
- Lucene6.5.0 下中文分词IKAnalyzer编译和使用
- python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法
- Spring Boot(2) 配置文件
- vue el-tree 同时向后台传递选中和半选节点数据 (回显数据勾选问题已解决)
- 将dll制作成控件_丹江口水库发现1.68米长巨型鱤鱼,将被制作成标本展出,吃货们哭了...
- android java静态库,Android NDK开发相关知识集合
- ExtJS 4中动态加载的路径设置
- linux opendir路径_Linux C/C++ ----目录文件的操作(opendir,readdir,closedir)
- WIFI密码破解技巧---简单之成功率极高
- 如何用python计算年龄_python根据出生日期计算年龄的代码
- eWebEditor编辑HTML,eWebEditor编辑器免费版
- 图像宽度所占字节必须是4的倍数详解
- tableau-计算一个月内的第几周
- Codeforces Round #818 (Div. 2)
- 华为云服务器 端口无法访问——配置安全组
- Cocos2d-x 3.0正式版 HelloWorld分析
热门文章
- Java多线程复习:1(进程和线程、并发和并行)
- 南昌大学计算机专业高数课本,南昌大学高等数学期末考试.pdf
- impala 本年格式化时间_hive,hbase,impala之间的对比
- ElasticSearch安装使用 操作索引
- solr 实现对经纬度的查询
- spark为什么比hive速度快?
- luogu P1280 尼克的任务 序列DP
- APP之红点提醒三个阶段
- Servlet,过滤器,监听器,拦截器的区别
- lombox的用法(省去了set/get/NoArgsConstructor/AllArgsConstructor)