静态成员函数如何调用非静态成员变量
◆函数加参数解决方法
1)、编译时候静态数据和成员函数就有了它的内存区,它不属于类的任何一个具体对象。所以,静态成员函数在编译时候就需要确定x及y的值,而那个时侯变量x,和y还没有创建,所以不可以访问非静态的数据成员。
2)、一般情况下静态成员函数用于访问同一类中的静态数据成员或全局变量,而不访问非静态成员,如需访问非静态成员,需要将对象作为参数,通过对象名访问该对象的非静态成员。
#include <iostream>
using namespace std;
class test
{
public:
int x,y;
test(int a=1 , int b=1) { x=a; y=b;}
static void a(test t) { t.x=t.x+t.y; }
void print() {cout<<"x="<<x<<endl; cout<<"y="<<y<<endl;}
};
void main()
{
test t;
t.print();
t.a(t);
t.print();
}
◆函数固定不能加参数解决方法
两种方法解决:
想办法传一个this指针进去或使用全局变量。
1)用全局变量
2)this指针
class CChangeUPSTime
{
public:
static pascal OSStatus MainWindowEventHandler();
private:
static CChangeUPSTime *m_pThis;
WindowRef m_WindowRef;
};
CChangeUPSTime *CChangeUPSTime::m_pThis = NULL;
CChangeUPSTime::CChangeUPSTime()
{
m_pThis = this;
}
OSStatus CChangeUPSTime::MainWindowEventHandler(){
m_pThis->m_WindowRef = NULL;
}
原文地址:http://yaycici.blog.163.com/blog/static/173759063201291741815353/
静态成员函数如何调用非静态成员变量相关推荐
- 【C++静态成员函数不能调用非静态成员变量】
C++静态成员函数不能调用非静态成员变量 静态成员函数 this指针 C++静态成员函数不能调用非静态成员变量原因 为什么要引入static 什么时候用static 致谢 静态成员函数 定义:静态成员 ...
- qt 静态成员变量_Qt 静态成员函数的调用非静态成员变量,非静态成员函数
在多人开发的项目中,一些通用的工具类接口可以用静态成员函数.方便调用,并且不容易调用错误. 静态成员函数不传递this指针(不能->),不识别对象个体,所以经常用于对静态数据成员进行操作.不能操 ...
- 为什么静态方法无法直接调用非静态成员变量和方法
静态方法无法直接调用非静态成员变量和方法 看到这句话,要想到形容的是这样的如下 静态方法里面无法调用非静态变量 下面在写一个对比非静态的方法和静态方法调用变量对比 问题原因 静态变量和静态的方法是属于 ...
- Cpp 对象模型探索 / 类静态成员函数的调用方式
一.普通静态成员函数的调用方法 栗子: class CA { public:static void func() {} };int main() {CA A;A.func();CA::func();r ...
- 类的成员函数指针和静态成员函数指针 调用成员函数***
C++提供static这个关键词对静态成员进行声明,静态成员函数和类的实例化无关,对于同一类来说,静态成员函数是所有类的对象共享的.而普通成员函数需要实例化才能调用,对于每一个实例来说,普通成员函数是 ...
- 为什么静态成员函数可以访问私有成员变量?(访问控制是针对类而不是针对对象)
访问控制是针对类而不是针对对象 先看几个标准定义 A member of a class can be - private; that is, its name can be used only by ...
- php静态方法调用变量吗,php静态方法怎么调用非静态变量?
php中,静态方法可以使用self关键词来调用非静态变量,例"self::$name":一个方法被"self::"后,它就自动转变为静态方法.注:静态方法不能调 ...
- java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况
/* 样例1:class Parent{int num = 3;}class Child extends Parent{int num = 4;} *//* 样例2: class Parent{}cl ...
- 为什么C++静态static函数不能访问非静态成员
原因如下: 1. 静态static成员函数不同于非静态函数,它只属于类本身,而不属于每一个对象实例.静态函数随着类的加载而独立存在.与之相反的是非静态成员,他们当且仅当实例化对象之后才存在.也就是说, ...
最新文章
- Spring Boot 中引入 MyBatisPlus 的常规流程
- micropython串口通信_MicroPython-ESP32串口通信-1Z实验室
- python关键字匹配_python通过BF算法实现关键词匹配的方法
- python顺序控制语句_Python学习之 流程控制语句
- EMD算法原理分解信号
- OD使用教程10 - 调试篇10|解密系列
- 【转】Topshelf入门
- 云计算机教室优缺点,云教室和传统机房的区别,终于有人把它说清了
- 玛丽·娜拉(Marie Neurath)遗失的遗产
- 行测数量关系公式总结
- 应用计算机测定线性电阻伏安特性实验报告,电阻伏安特性曲线实验报告.docx
- Python绘制表白爱心源码【女神看了绝对不会拒绝的你的表白嘿嘿】
- 重磅 | 消灭所有马赛克,谷歌宣布机器学习图像锐化工具RAISR
- 计算机电路计数器pl什么意思,计数器原理—不懂就要看哦~~
- python 求两线段是否相交,如果相交求交点
- quick-x用http发送字节流会被截断的问题
- 【产品人生】<业务流程业务逻辑>产品经理需要掌握的各种图
- Cling 源码解析
- 应用回归分析(知识点整理)(二)
- CSS3生日快乐之烟花动画特效