當前位置:首頁 » 文件傳輸 » 同類如何訪問靜態變數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

同類如何訪問靜態變數

發布時間: 2022-09-23 00:13:41

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了。