1. 静态成员函数没有this指针,是怎么实现被对象访问的。
类的静态函数被该类所有的实例所共享,因而没有this指针,不能访问类的非静态成员,示例如下:
class cls
{
plublic:
cls(){ m_value = 0;};
virtual ~cls(){};
int m_value;
static int m_static_value; //静态成员变量
static int foo(); //静态函数
int foo2();
};
int cls::foo()
{
++cls::m_static_value; // 类的静态函数访问类的静态成员变量
}
int cls::foo2()
{
++m_value;
}
int cls:m_static_value = 0;
cls var;
var.foo2(); //调用类的非静态函数
cls::foo(); //调用类的静态成员函数
cls var1; // var1的m_static_value 此时为1,因为静态成员变量,被类cls的所有实例所共享
2. c++中,类的普通成员函数通过this指针访问普通成员变量,那访问静态成员变量时是怎么实现的
静态成员变量的位置是确定的,不要对象就可以直接访问。
比如下面代码的两种引用方法是等价的:
classTest{
public:
staticintms_Data;
};
intmain(){
Testt;
std::cout<<t.ms_Data<<std::endl;
std::cout<<Test::ms_Data<<std::endl;
}
3. java静态成员变量的问题
是被多个对象共享的 在其中一个对象修改了值的话 所有其他对象的值全部都会变
4. 静态成员变量(或称类变量)是通过____来访问的
可用的访问方式
1、类名::静态成员变量,这个是最通用的方式
2、类对象.静态成员变量
5. 静态成员的访问格式是什么麻烦举个例子,谢谢
静态成员在类中可以分为静态成员函数和静态成员变量。
访问时有两种访问方式,使用类名加作用域分辨符加成员名,此其一;也可以使用对象名.成员名访问。如:
classA
{
public:
staticvoidTest()
{
}
public:
staticinta;
};
intA:a=0;
intmain()
{
A::Test();//正确
A::a=100;//正确
Aa;
a.Test();//正确
a.a=100;//正确
A*p=&a;
p->Test();//正确
p->a=100;//正确
return0;
}
要注意的是,在访问时,还是需要遵守访问权限(private/protected/public)的规则。
6. 用_______修饰的变量叫静态变量,可以通过____和_____访问
用 static 修饰的变量叫静态变量,可以通过 类名 和 实例化对象 访问.
如:
7. C++类中静态对象成员的访问!
类其实是个模型。
而对象就是找个这个模型制作的实体。
比如,类是造车的图纸,对象就是找个图纸造出的汽车。
类的成员是分级别的:protect,public,private。
在类内部定义的函数可以访问任何一个变量,或者调用任何的类内部的函数,但是,如果被定义成private的话,对象是不能调用的,也就是对象只能调用定义为public的数据,如果你确实需要调用某个private的变量,你可以定义一个public的函数来返回这个变量,比如:
class
d
{
private:
int
a;
public:
int
getint(){return
a;}
......
}
这里你的对象不能调用a的,
也就是不能
int
b;
d
d;//假设已经写好了构造函数
b=d.a;//这是错误的,
但是你可以
b=d.getint();
这样就可以把a的值给b了。
所有的public的函数都可以通过
<对象>.<函数名>
的方式来调用
8. 能不能通过类名直接访问静态内部类的成员变量
外部类,内部类,匿名类,外部类就是两个类并列的class A {} class B {},内部类:class A { class B {}},B可以直接使用包涵它的类的成员变量,内部类不能被除包涵类以外的类调用;还有就是匿名类,也是内部类 classA{new {}}省略定义类名直接定义方法和使用,这个适用于代码比较简单且这个类不需要被其他类调用。并且,外部类可以访问内部类的方法以及静态方法和数据域。
9. 在JAVA中静态变量可以通过"类名.变量名"的方式来访问是什么意思.可不可以举个例子
比如
class AB{
public static int a=0;
public int b=1;
}这个类
访问a的话 可以直接用 AB.a 而不需要实例一个AB对象而访问b的话需要 AB ab=new AB();先得到一个AB的实例 再用ab.b;才能访问。