C 中使用全域性變數好,還是public的類成員變數好

2021-08-26 05:04:38 字數 1372 閱讀 3695

1樓:匿名使用者

1 c++杜絕全域性變數。

2 c++也不建議把成員變數設定為public。(而且簡單的pubic設定和全域性化也沒有任何關聯,估計你想要的是static的public變數)

不知道你為什麼會有這類問題,c++看待角度應該和c有截然不同的視角,不要用c的想法去套c++。

我無法估計你要什麼,我只能估計給個建議:

1 如果你需要全域性訪問的物件(注意,儘可能不用變數來描述),可以參考使用單例模式的類設計。

2 最好的方法,還是將需要全域性訪問的內容轉換為非全域性訪問。

3 上面兩個之間的權衡沒有絕對標準,一般以2為主導,1的方法只適合橫向切入系統的類設計,例如日誌類、配置類等。(其實,也可以進行非全域性融入)

如果你願意,可以把你的具體問題羅列一下,我給點建議。

2樓:匿名使用者

全域性的變數 只需在標頭檔案直接宣告就可以全域性使用了。

使用public類的話還要宣告建立一個全域性的類物件,才能在全域性訪問。

兩個相比的話沒有什麼好壞之分,自己能用的順手才是最好的。

3樓:周生

public成員變數

因為全域性變數作用範圍太大,可能會汙染名字空間

但是public的類成員的作用範圍只在類裡邊,是有限制的

4樓:匿名使用者

c++全域性變數 跟c中的全域性變數一樣

public的類成員變數 跟c中的結構體變數一樣

這好不好,就看你如何設計你的程式. c++與c不一樣,c++是物件導向的.

5樓:匿名使用者

public成員變數 必須必~

c++中,對於類,如果不用全域性變數,定義一個物件。不能使用全域性變數,問題如下 20

6樓:成都

#include

#include

#include

using namespace std;

const int name_len=32;

class a

;char a::name = "\0";

void fun1()

{a a;

strncpy_s( a.name, "xiaoming",name_len);

std::cout<

如果不是作為引數也不希望通過全域性變數,那你可以考慮用靜態變數來嘗試,以上**僅供參考。

7樓:匿名使用者

class a

;void fun1()

void fun2(a &a)

void fun2(a a)

void fun2(a *a)

怎樣使C語言全域性變數在多個檔案中使用

extern 關鍵字 extern int i 這樣就可以在其他檔案中使用在標頭檔案中宣告版 a.hextern int i 在其他某 個c檔案中定義權 int i 0 其他要使用i變數的c原始檔只需要include a.h 就可以 c語言中如何在多個檔案中引用同一個結構體 把結構體定義在一個公共標...

python使用多程序時,全域性變數改了,為什麼在函式a中值沒

在子程序引用宣告變數的模組,然後直接用.引用就更新了 用python的tkinter中的按鈕,繫結的事件如何更改全域性變數的問題 from tkinter import def changestringvar a.set changed print a.get 在這print a.get 就能列印在...

C語言靜態區域性變數和全域性變數有什麼區別,不都是在整個程式中都

1 靜態區域性變數在函式內定義,但不象自動變數那樣,當呼叫時就存在,退出函式時就消失。靜態區域性變數始終存在著,也就是說它的生存期為整個源程式。2 靜態區域性變數的生存期雖然為整個源程式,但是其作用域仍與自動變數相同,即只能在定義該變數的函式內使用該變數。退出該函式後,儘管該變數還繼續存在,但不能使...