導航:首頁 > 源碼編譯 > 類是在編譯時定義的

類是在編譯時定義的

發布時間:2023-07-06 00:39:10

A. C++中,只有類,沒有對象,編譯時是否會賦予類被分配空間的能力

你說的「空間」看來是指數據呢。那確實是不會。
另外對於函數,沒有被調用到,運行時就不會給它分配對應空間,這指的也是數據空間

代碼空間的話,類或者函數,都有。

B. C# 類的實例化是在 編譯時 還是 運行時發生的

同上,正確答案是在運行時,
NET程序在編譯的時候是由編譯器把C#代碼轉換成MSIL(微軟中間代碼),此時僅僅是對代碼進行了修改

在程序第一次運行的時候CLR(公共語言運行時)根據本地硬體特徵編譯生成最優化的二進制文件,存放在C盤對應版本的NET的緩存中,

之後才會調用CPU執行,執行的時候,如果遇到new關鍵字,才會在內存中實例化對象開辟空間

也就是說,在程序沒有執行之前,代碼還是代碼,new都沒有調用

C. C++類類型在說明時編譯器會給它開辟什麼內存空間

在你的類中由於你沒有編寫你自己的默認構造函數,所以執行語句A a1,a2,a3;時編譯器會調用編譯器提供的默認構造函數來生成三個對象。此時已經分配了內存空間,這些空間位於棧上,如果你用的是new關鍵字的話,這些內存將在自由存儲空間裡面分配,也就是在堆上,在C++中,程序員在堆上申請的內存空間,要自己負責釋放。

樓上的講錯了。

類的成員函數在內存中只有一份拷貝,而數據成員是每一個對象都有一份自己單獨拷貝,並且就是靠這些屬性來區分對象。
正是由於在成員函數中隱藏了this指針,所有成員函數會自動跟蹤對象。

D. java中什麼是類和對象

類就是具備某些共同特徵的實體的集合,它是一種抽象的數據類型,它是對所具有相同特徵實體的抽象。在面向對象的程序設計語言中,類是對一類「事物」的屬性與行為的抽象。舉一個例子說明下類,比如Person(人)就是一個類,那麼具體的某個人「張三」就是「人類」這個類的對象,而「姓名、身高、體重」等信息就是對象的屬性,人的動作比如「吃飯、穿衣」等就是對象的方法。總之類就是有相同特徵的事物的集合,而對象就是類的一個具體實例。同時類有多態和繼承,例如「人類」可以分為「男人、女人」,「老人、小孩」那麼「男人、女人」就是「人類」的子類等等。

Java語言中對類Person的定義往往如下:

public class Person {

private String name; //屬性:姓名

private int height; //屬性:身高

private int weight; //屬性:體重

public Person() {}

public Person(String name, int height, int weight) {

this.name = name;

this.height = height;

this.weight = weight;

}

//... some methods...

public void doSth() { //行為:

//... do something

}}

Java中的類

類可以看成是創建Java對象的模板。

通過下面一個簡單的類來理解下Java中類的定義:

public class Dog{
String breed; int age; String color; void barking(){
}

void hungry(){
}

void sleeping(){
}}

一個類可以包含以下類型變數:

E. 關於JAVA多態的編譯時類型與執行時類型的一個問題.

多態的對象,在編譯器為sub分配內存空間的時候執行的父類的屬性,
運行期,也就是調用方法的時候,指定是子類的行為

這是因為,對象的屬性是在聲明時指定,方法數據對象的行為

閱讀全文

與類是在編譯時定義的相關的資料

熱點內容
java實現快捷鍵 瀏覽:94
程序員打代碼最佳時間 瀏覽:569
怎麼裝原生態安卓 瀏覽:847
工程圖學pdf 瀏覽:398
開放的程序員 瀏覽:952
胡希恕傷寒論講座pdf 瀏覽:766
aspnet程序員薪水 瀏覽:76
蘋果為什麼屏幕看得比安卓舒服 瀏覽:119
蘋果數據線怎麼轉安卓 瀏覽:656
黑格爾pdf下載 瀏覽:959
備忘錄里新建文件夾怎麼刪除 瀏覽:12
伺服器黑名單怎麼處理 瀏覽:842
程序員電視劇25集 瀏覽:214
80351單片機 瀏覽:958
advancedwifi源碼 瀏覽:577
maczip解壓成文件夾後怎麼打開 瀏覽:120
androidapp內存大小 瀏覽:451
程序員干私活網站 瀏覽:379
未來軟體加密鎖驅動 瀏覽:930
美軍如何拒絕執行上級命令 瀏覽:489