22.c/c++程式設計師面試寶典-類
類是物件導向程式設計語言中最重要的概念之一,其本質上是對某種型別的物件定義變數和方法的原型。它表示對顯示生活中一類具有共同特徵的事物的抽象。類是物件導向程式設計的基礎。
面試題98 類和結構有什麼區別*****
分析:類是對某種型別的物件定義變數和方法的原型。它表示對顯示生活中一類具有共同特徵的事物的抽象,是物件導向程式設計的基礎。
類是對某個物件的定義。它包含有關物件動作方式的資訊,包括它的名稱、方法、屬性和事件等。類本身並不是物件,因為它不存在於記憶體中。當引用類的**執行時,類的乙個新的例項,即物件,就在記憶體中建立了。乙個類可以在記憶體中建立多個相同型別的物件。類定義的一般形式如下:
class name ;
其中public表示公開訪問許可權。而private表示只有類自身才具有訪問許可權。類成員有3種不同的訪問許可權。
公有成員可以在類外訪問;
私有成員只能被該類的成員函式訪問;
保護成員只能被該類的成員函式或派生類的成員函式訪問。
類體定義類的成員,它支援兩種型別的成員,具體如下:
一是資料成員,它們指定了該類物件的內部表示;
二是成員函式,它們指定了該類的操作。
結構是使用者定義的值型別。與類相似,結構可以保護建構函式、常數、字段、方法、屬性、索引器、運算子和巢狀型別。
結構定義的一般形式如下:
struct test ;
下面來使用結構和類來實現同樣的乙個輸出日期的功能。示例**如下:
#include
using namespace std;
struct date1 //定義結構體 ;
void date1::display()
class date2 //定義類
date2(int year0,int month0,int day0) //帶引數的建構函式
void getdate()
}; int main()
注意:c語言中只有結構的概念,在c++中,可以在結構體中宣告函式,但是在c語言中是不允許的,這也是c語言和c++的本質區別之一。
【答案】例項化的類儲存在記憶體的堆內,而結構儲存在棧內,結構的執行效率相對較高。結構沒有析構函式。結構不可以繼承。一般來說結構用來處理較少的程式基礎資料,而類用來處理複雜邏輯。
面試題99 抽象類及它的用途***
分析:有的時候,基類並不需要與具體的事物關聯起來,例如動物,它是乙個抽象的概念,表示所有的動物,可以派生企鵝,猴子等。c++引入了抽象類的概念來為各種派生類提供乙個公共的介面。
抽象類可以提供多個派生類共享基類的公共定義,它可以提供抽象方法,也可以提供非抽象方法。抽象類不能例項化,必須通過繼承由派生類實現其抽象方法,也就是說,對抽象類不能使用new關鍵字,它也不能被封裝。如果抽象類的派生類沒有實現所有的抽象方法,則該派生類也必須宣告為抽象類。派生類使用覆蓋來實現抽象方法。
抽象類一定包含有純虛函式,因此不能定義抽象類的物件。乙個使用抽象類的**示例如下:
class a //定義抽象類 ;
class b : public a //繼承抽象類
int main()
在上面**中,f1()是乙個普通的過載。呼叫m_j->f1();會呼叫a類中的f1(),它是由a類定義的,這樣就呼叫這個類的函式。f2()是虛函式。m_j->f2()會呼叫m_j儲存的物件中對應的這個函式。這是由於new b()物件。f3()和f2()一樣,但是在基類中不需要寫函式的實現。
【答案】包含純虛函式的類稱為抽象類。抽象類把有共同屬性或方法的物件抽象成乙個類。
C C 程式設計師面試寶典 2
9.關聯式資料庫的正規化 10.資料庫操作中的事務 事務的4個特性 11.數字矩陣的生成 對應的 如下 include include include define print arr2d arr,n else print arr2d arr,n 1 2 6 7 15 3 5 8 14 16 4 9...
程式設計師面試寶典 C C 記憶體分類
在進行c c 程式設計時,需要程式設計師對記憶體的了解比較精準。經常需要操作的記憶體可分為以下幾個類別。棧區 stack 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等。其操作方式類似於資料結構中的棧。堆區 heap 一般由程式設計師分配和釋放,若程式設計師不釋放,程式節束時可能由操 作...
程式設計師面試寶典
據統計,80 的簡歷都是不合格的。不少人事管理者抱怨收到的許多簡歷在格式上很糟糕。簡歷應該如何做到在格式上簡潔明瞭,重點突出?求職信應該如何有足夠的內容推銷自己?如何控制長度,言簡意賅?相信讀了本章你會對簡歷的撰寫有乙個新的認識。2.1 簡歷注意事項 1 簡歷不要太長 一般的簡歷普遍都太長。其實簡歷...