A. c++中,类的普通成员函数通过this指针访问普通成员变量,那访问静态成员变量时是怎么实现的
静态成员变量的位置是确定的,不要对象就可以直接访问。
比如下面代码的两种引用方法是等价的:
classTest{
public:
staticintms_Data;
};
intmain(){
Testt;
std::cout<<t.ms_Data<<std::endl;
std::cout<<Test::ms_Data<<std::endl;
}
B. C++中,如何访问类的静态成员!
1.静态成员函数中不能调用非静态成员。
2.非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的。
3.静态成员变量使用前必须先初始化(如int MyClass::m_nNumber = 0;),否则会在linker时出错。
4.在类的非静态成员函数中使用类的静态成员
class Point
{
public:
void init()
{
output();
}
static void output()
{
}
};
void main()
{
Pointpt;
pt.output();
}
5.使用类的静态成员变量
#include <stdio.h>
class Point
{
public:
Point()
{
m_nPointCount++;
}
~Point()
{
m_nPointCount--;
}
static void output()
{
printf("%d\n", m_nPointCount);
}
private:
static int m_nPointCount;
};
int Point::m_nPointCount = 0;
void main()
{
Pointpt;
pt.output();
}
C. 所谓的静态变量用类名调用,是指在另一个类中调用还是在同类的另一个方法中调用
首先,你的表述有问题:只有类中的变量才称为成员变量,方法中的变量称为局部变量。
其次,局部变量只在方法内部有效,方法运行结束后变量会销毁,所以在一个方法中无法调用另一个方法中的变量。如果你希望多个方法共享某个变量,可以把这个变量定义成类的成员变量。如下:
class ABC
{
int j;
public void f1()
{
j=10;
}
public void f2()
{
System.out.println("j="+j);
}
}
D. C++的类中怎么用静态变量
在c++里,遵循静态成员函数引用静态变量的原则,此外对与类的话,如果定义了静态变量,那么只能够在类外赋值,类识不分配内存的,static一旦赋值就有了内存。
E. C++中,如何访问类的静态成员!
静态成员不论是共有的还是私有的,只能通过静态的成员函数才可以访问,也就是说,普通的成员方法不可以访问,如果想访问静态变量,只能通过静态函数,这么说你就懂了吧就像下面。
如果你定义了一个:
static
int
n;
那么就要相应的有一个static的函数,不论这个类的任何对象,都可以通过这个成员函数去访问,需要注意的是,静态成员变量是类本身的,不属于某个对象,也就是说,是所有对象共享的数据。在一个对象里改变了它的值,别的对象里也会改变。从内存的角度讲,静态成员变量和静态成员函数,所有对象都共享这块内存,不是生成一个对象就分配一块。
F. 在Java中同类中的静态方法能否调用类成员变量呢为什么
不行,因为java中静态的东西是类级别的,也就是说用类名就可访问,也可以用任何对象名访问,无论以哪种形式访问的都是同一个东西。
而一般我们所说的成员变量,是指对象级别的,也就是说每一个对象所拥有的成员变量都是独立的不同的变量,是属于对象自己拥有的。相对于来说访问范围,无疑是静态的更大,静态的可以被任何对象所访问且是同一个,而成员变量是每个对象各自拥有的。
那么,为什么“静态方法不能调用类成员变量”,因为要想访问成员变量你必须有个“已经实例化好的对象”,除非你在静态方法里创建一个当前类的实例对象,否则你是无法直接调用成员变量的,因为它不知道这个成员变量属于哪个实例对象的。
而在成员方法里,所有属于成员的变量、方法已经可以确定是同一个对象的,并且可以用this表示当前对象。
G. C++的类中怎么用静态变量
C++类支持静态成员变量,在使用的时候,遵循类内声明,类外定义的原则。即在类内部进行声明该变量的类型以及静态属性,但不可以赋初始值,而是要在类外定义,同时赋初始值。
如
classclass_type
{
staticvar_typevar;
};
var_typeclass_type::var=init_value;
初始值部分,=init_value可以省略,省略时默认赋值为0。
在使用上:
1 成员函数均可使用静态变量;
2 如果静态变量属性为public,那么任意一个对象a均可使用静态变量var,使用形式为 a.var;
3 如果静态变量属性为public,那么可以用如下形式,在类class_type有效的范围内,使用静态变量var:
class_type::var
H. 在同一个C语言程序项目中,其它.c文件可以访问另一个.c文件中的静态变量吗
直接用变量名访问是不行的,要通过函数调用来读写。例如:假设1.c文件里有静态变量static int a; 如果2.c文件想要读写a,就必须在1.c文件里添加读写a的外部函数。1.c写法示例:
static int a;
extern int get_a() { return a; }
extern void set_a(int v) { a=v; }
这样,在2.c里就可以调用get_a()和set_a(int v)函数来读写变量a了。