qfgl.net
当前位置:首页>>关于非静态函数访问静态成员的资料>>

非静态函数访问静态成员

可以 直接使用类名.静态变量访问.

静态成员函数是先于类出现的,可以直接用“类名.函数名”

2楼的回答正确,只要是这个类的成员函数,即使是静态成员函数,也可以访问这个类的实例的私有成员变量和函数.

C++中静态成员函数是不能访问非静态成员的,但反过来就可以. 因为静态成员是属于类的,它可以在类对象没有被初始化时就访问,而非静态成员则必须要在类对象初始化后才会被创建并初始化,所以在C++中静态函数不能访问非静态成员.

静态成员函数不能访问非静态数据成员,只能通过具体类对象做参数访问

无法直接访问.但是线程函数是可以接受一个void*参数的,所以你可以让静态函数接受一个实例化后的类的指针,这样就可以访问其成员变量了.class a{public:int c; //非静态成员变量static void thread(void* b) { a* a = (a*)b; a.c; //访问非静态成员变量}};

没有搞错 这是C++语法所决定的 C++类的静态成员变量和静态成员函数是所有实例共用的 这个和C的静态变量静态函数的概念不一样,需要理解 所以类静态函数访问非静态变量只有通过参数指明要访问的对象才可以 因为 i,j都是类对象当然可以访问私有成员 外部不允许访问私有成员是说类以外代码不允许访问 两个类实例间的访问也是在类内部完成的 void A::f(A a) { cout<<a.x; } 这个本身是类的成员函数,当然可以访问 因为函数 f本身是静态函数,所以访问时要指明具体访问对象 这就在于正确理解

java类的成员变量有俩种:一种是被static关键字修饰的变量,叫类变量或者静态变量另一种没有static修饰,为成员变量可以那么说:类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享.静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期.而实例变量取决于类的实例.每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期.注意几点:中初始化的顺序:加载类;静态变量初始化;静态块;【其只能调度静态的,不能调度非静态的】成员变量;

你的long Person::GetID(Person x);这个是函数声明,去掉";"就可以.请参考.

网站首页 | 网站地图
All rights reserved Powered by www.qfgl.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com