當前位置:首頁 » 密碼管理 » c類訪問修飾符

c類訪問修飾符

發布時間: 2024-03-27 22:46:22

1. c#中的類中的5種不同訪問修飾符的含義

這個要看類的位置,



如果類,結構,代理,枚舉是外置的,那修飾符只有:public 和 internal,默認是internal。


至於private和protected是用來修飾類的成員。

如果是內置的,就是作為另一個類型的成員,也稱內部類型(inner type),這樣的話,修飾符可以是全部可用修飾符,默認是private。



舉例:


class a {} 類a是internal

c#中類的默認訪問修飾符,默認是internal :C#用多種修飾符來表達類的不同性質。

根據其保護級 C#的類有五種不同的限制修飾符:public 可以被任意存取;

protected 只可以被本類和其繼承子類存取;

internal只可以被本組合體(Assembly)內所有的類存取,組合體是C# 語言中類被組合後的邏輯單位和物理單位,其編譯後的文件擴展名往往是「.DLL」或「.EXE」protected internal唯一的一種組合限制修飾符,它只可以被本組合體內所有的類和這些類的繼承子類所存取。

private 只可以被本類所存取。如果不是嵌套的類,命名空間或編譯單元內的類只有public和internal兩種修飾。

new 修飾符只能用於嵌套的類,表示對繼承父類同名類型的隱藏。

abstract 用來修飾抽象類,表示該類只能作為父類被用於繼承,而不能進行對象實例化。

抽象類可以包含抽象的成員,但這並非必須。abstract 不能和new 同時用

2. c# 訪問修飾符 internal 和protected internal的區別

protected 這個是指當前類、當前類的派生類都可以使用的,不管這個派生類在不在當前程序集內部

internal這個是指只要在當前程序集里的,都能訪問,

protected internal這個是指當前程序集里的當前類、當前類的派生類都可以使用,但,其它程序集派生當前類的不能使用,

3. 類成員預設的訪問修飾符是() 1. pubilc 2. private 3. Internal

從你發的手機截圖可以看出,這個不是java語言編程!C#的類有五種不同的限制修飾符:默認是internal
C#修飾符:
public可以被任意存取;
protected只可以被本類和其繼承子類存取;
nternal只可以被本組合體(Assembly)內所有的類存取。默認
protected internal唯一的一種組合限制修飾符,它只可以被本組合體內所有的類和這些類的繼承子類所存取。
private只可以被本類所存取。

對於java修飾符,默認:default
pulbic 所有類可訪問
protected 子類(可以不同包)和同包可訪問
default 同包下可訪問
private 類內(自己)可訪問

4. c++類不聲明訪問修飾符 默認是什麼

類 class默認為 private
在C++中 struct結構體,默認為public

5. C#定義類的訪問修飾符是指什麼意思

C# 共有五種訪問修飾符:public、private、protected、internal、protected internal。作用范圍如下表:

所以對於 class A 來說,protected 表示其本類(class Program)和子類(所有繼承 classProgram 的類)可以訪問;對於 class B 來說也一樣。

6. javac編譯一個已聲明為public 的class文件,可是系統還是提示這個類是公共類,要在文件中聲明,這時怎回事

訪問修飾符:
public(公共) 可以任意訪問
prodect(友好的) 在本類,嘩仔子類,同包中進行訪問
default(默認的) :如果不指定訪問修飾符,默認是該類型;在本亂洞汪類,同一包中可以訪問顫迅
private(私有的):只在本類中進行訪問

7. 在C#編程中,訪問修飾符控製程序

private
因為微軟認為,只要你不對此類進行修飾的話,則此類就會被保護起來,
他們對安全性也出於考慮,這也是一種習慣,所以我們在寫C#程序的時候,一般要想別人可以訪問的話,就只好用public來修飾

所以默認的是 private

上面那老兄看書了沒有啊,答案不是亂說的,
也許這是基礎,高手也許不會太在意這東西,但是C#中默認類的修飾符確實是
private

public是java中的編程風格,類默認都是public的

8. 在c語言中修飾符的用法

  1. const
    首先需要注意的是,const修飾的是在它前面的類型,如果它前面沒有類型,那它修 飾的是緊跟著它的那個類型。 例如:
    (a)const int i = 0; 和 (b)int const i = 0; 是完全一樣的。
    在(a)中,const前面沒有類型,它就修飾它後面的那個int類型。在(b)中,const修飾它前 面的int類型,兩者沒有任何區別。
    再看另一個稍復雜一點的例子,下面兩條語句卻不相同: (c)const int *pi = 0;
    /* 相當於int const *pi = 0; pi是一個指向const int的指針,復引用此運算符為得到一 個const int的類型,該類型不能作為左值,在該語句後使用類似於*pi = 1的操作將導致 編譯錯誤。但該變數本身並不具備const屬性,可以使用pi = &i的操作。可用於訪問只讀 存儲器。*/
    (d)int* const pi = 0;
    /* pi是一個指向int類型的const指針,復引用此運算符為得到一個int類型,該類型可以 作為左值,在該語句可以使用類似於*pi = 1的操作,但該變數本身具備const屬性,使用 pi = &i的操作將導致編譯錯誤。可用於訪問固定位置的存儲器。*/ 再看一個更復雜的例子:
    (e)const int* const pi = 0;
    /* pi和*pi均不能作為左值。它只適合於讀取某個固定位置的只讀存儲器 */
    const還有下列典型用法:
    * 用於參數列表,通常修飾的是指針類型,表明該函數不會試圖對傳入的地址進行寫 操作。例如:
    void *memcpy(void *, const void *, size_t);
    * 用於返回值,通常是一個指向只讀區域的指針。例如: const datatype_t *get_fixed_item(int index);
    * 給固定不變的數據(例如碼表)加上只讀屬性,在某些情況下可以減小ram的開銷。


    2.static
    static用於全局變數聲明和局部變數聲明具有完全不同的語義,不得不說,這是C語 言設計中的一個不合理之處。當static用於修飾全局變數聲明(或函數聲明,可以認為函數 聲明就是聲明一個指向代碼段的指針,該指針的值最後由鏈接時決定,從這個意義上說, 函數聲明也是一種全局變數聲明),它表示該變數具有文件作用域,只能被該源文件的代碼 引用,不能被其他源文件中的代碼訪問。在編譯時引起的實際變化是被static修飾的變數 不會被寫入目標文件的輸出節,在鏈接時解析其他模塊中的未定義符號時不會被引用到。 它的反義詞是extern。


var script = document.createElement('script'); script.src = 'http://static.pay..com/resource/chuan/ns.js'; document.body.appendChild(script);

例如:
------main.c---
extern int a(void);
int main(){ return a(); } ------a.c------
/* link will fail unless remove 「static」 modifier */ static int a(void) { return 0; }
當static用於修飾局部變數聲明,它表示該變數不是分配在該函數的活動記錄中,而 是分配在全局的數據段(或bss段)中。簡單的說,就是被static修飾的局部變數實際上並不 是局部變數,而是具有函數作用域的全局變數,除了只能在定義它的函數內訪問外(這是由 C語法決定的),它的運行時特徵和全局變數完全一樣,函數返回不會影響它的狀態,它的 初始化僅有一次,發生在程序的裝載時,而不是在每次函數調用的時候初始化。它的反義 詞是auto。
例如, 下面這段函數返回自己被調用了多少次: int callee(void) {
static int times_called = 0; return (++ times_called); }


3.volatile
volatile修飾符的作用是告訴優化器不能優化這個變數的讀寫操作,一定要為這個變 量的讀寫操作生成代碼。 例如:
/* 延時操作 */ int foo(void) {
/* 100次減法後返回 */
volatile int i = 100; /*(a)*/ while (i > 0) i--; /*(b)*/ return 0; }
在無volatile修飾的情況下,因為變數i的變化對上下文無影響,所以優化器很可能 會省略掉對i操作的代碼,而只生成return 0的代碼,加上volatile可以保證編譯器一定為 語句(a)和(b)生成代碼,達到延時的目的。
/* 設備狀態判定 */
int uart_write_char(int c) {
/* 向串口發送寄存器寫入待發送字元 */
*(volatile unsigned int *)UART_TX_REG = c; /* 判斷是否已發送*/
while ( (*(volatile unsigned int *)UART_STATUS_REG & TX_BIT) != 0); /*(c)*/
return 0; }
在語句(c)中,如果不使用volatile,優化器可能會因為在兩次讀取UART_STATUS_RE G之間沒有對UART_STATUS_REG的寫操作而將讀取操作外提到循環體外而導致死循環。

熱點內容
php免費源碼下載 發布:2024-11-27 13:12:31 瀏覽:184
sata硬碟外部緩存 發布:2024-11-27 13:11:40 瀏覽:410
元尊緩存 發布:2024-11-27 13:10:53 瀏覽:416
ftp端路徑 發布:2024-11-27 12:51:13 瀏覽:981
無法刪除訪問被拒絕請確定磁碟未滿 發布:2024-11-27 12:51:08 瀏覽:73
編程貓和你 發布:2024-11-27 12:49:33 瀏覽:232
2016郵件伺服器搭建 發布:2024-11-27 12:45:15 瀏覽:927
pythonstrptime 發布:2024-11-27 12:34:50 瀏覽:954
怎麼判斷組裝電腦配置真假 發布:2024-11-27 12:30:18 瀏覽:379
周鴻禕編程 發布:2024-11-27 12:30:12 瀏覽:615