1. 程式人生 > >C++面向物件面試題知識點整理

C++面向物件面試題知識點整理

面向物件
a.程式設計是在計算機中反映世界
面向系統設計帶來的種種便利
(1)良好的可複用性
(2)易維護
(3)良好的可擴充性


b.以下選項中哪一個不是面向物件設計?
(1)面向物件設計的三原則:繼承,封裝,多型
(2)里氏代換原則是繼承複用的基石
(3)開閉原則是面向物件設計的重要特性之一,軟體對擴充套件應該是開放的,對修改應該是關閉的。
(4)防禦性程式設計知識一種程式設計技巧,與面向設計無關


c.什麼是封裝?
從字面意思來看,封裝就是把一些相關的東西打包成一坨,分裝最廣為人知的例子,就是在面向物件程式設計裡面,把資料和針對該資料的操作,統一到一個class裡面


interface屬於繼承,virtual屬於多型,private屬於封裝


d.C++中的空類預設產生哪些類成員函式?


對於一個空類,編譯器預設產生4個成員函式,預設建構函式,解構函式,複製建構函式,賦值函式


e.struct 和 class 的區別(簡單介紹)


區別是Class中的變數預設是private,struct中的變數預設是public。
struct可以有建構函式,解構函式,之間也可以繼承,C++中的struct其實和class意義一樣,唯一不同的是struct裡面的預設訪問許可權是public,class預設的訪問許可權是private。


C++中存在struct關鍵字的唯一意義就是為了讓C程式設計師有個歸屬感,是為了讓C++編譯器相容以前用C開發出來的專案。


f.哪一種成員變數可以在同一個類的例項之間實現共享?


必須使用靜態成員變數在一個類的所有例項之間共享資料
(1)如果想限制對靜態成員變數訪問,則必須把他們宣告為保護型或者私有型
(2)不允許用靜態成員變數去存放某一個物件的資料
(3)靜態成員資料是在這個類的所有物件之間共享的


g.如果要把靜態成員資料設為私有,該如何訪問?


通過公有靜態成員函式訪問。


注意:設定了靜態成員變數,要給靜態成員變數設定初值


h.初始化列表的初始化變數順序是根據成員變數的宣告順序來執行的。


i.虛擬函式
虛擬函式就是允許被其子類重新定義的成員函式。


虛擬函式採用了一種虛呼叫的方法,虛呼叫是一種可以在 只有部分資訊的 情況下 工作的機制,特別允許我們呼叫一個只知道介面而不知道其 準確型別的函式,但是如果要建立一個物件,你勢必要知道物件的準確型別,因此建構函式不能為空


j.虛擬函式是非常有效的,但不能把每一個函式都宣告為虛擬函式.
因為虛擬函式是有代價的,由於每個虛擬函式的物件都需要維護一個V表,因此使用虛擬函式時會產生額外的系統開銷,如果是一個很小的類,且不想派生其他的類,那麼根本沒有必要使用虛擬函式。


k.重寫和過載的區別?


子類重新定義父類虛擬函式的做法,稱為重寫。
重寫的函式必須有一致的引數表和返回值。


過載是指編寫一個與已有函式同名但是引數表不同的函式


l.巨集,行內函數,模板都可以在編譯時解析,但是虛擬函式不可以,他必須在執行時才能確定
 
m.多型:面向物件程式設計領域的核心概念。
多型可以簡單概括為“一個介面,多個實現”,在程式執行時才可以確定呼叫哪一個函式


多型時通過繼承和虛擬函式實現的。


n.解構函式也可以設為行內函數(可以通過程式碼嘗試實現)





















































































相關推薦

C++面向物件試題知識點整理

面向物件 a.程式設計是在計算機中反映世界 面向系統設計帶來的種種便利 (1)良好的可複用性 (2)易維護 (3)良好的可擴充性 b.以下選項中哪一個不是面向物件設計? (1)面向物件設計的三原則:繼承,封裝,多型 (2)里氏代換原則是繼承複用的基石 (3)開閉原則是面向物

攜程架構師講解試題:基礎卻又沒多少人做對的面向物件試題

一、題目 public class Base { private String baseName = "base"; public Base() { callName(); } public void callName() { System. out. println(b

Java 面向物件 試題

1、封裝具有的特性? 答:(1)在類的定義中設定訪問物件屬性(資料成員)及方法(成員方法)的許可權,限制本類物件及其他類的物件使用的範圍。 (2)提供一個介面來描述其他物件的使用方法 (3)其他物件不能直接修改本物件所擁有的屬性和方法 (4)封裝反映了事物的相對獨立性  (

Js核心面向物件試題

1.網頁三要素是什麼 Icon HTML(內容) CSS(外觀) Javascript(行為) 2.JavaScript是什麼 Icon JavaScript一門解釋型(不是編譯型)指令碼語言,它的主要特點有:面向物件,弱型別,動態,基於原型的面向物件(物件)(不基於類) 3.講下js的資料型別

Java 面向物件試題

1.Java面向物件的三種特性 封裝:封裝是把資料和操作資料的方法封裝起來,對資料的訪問只能通過已定義的介面進行訪問。 Java的四種訪問控制符: - 預設的(default):不使

java面向物件試題(2)

1) 給定如下java程式碼程式片斷:        class A{               public A(){                      System.out.pri

2015攜程JAVA工程師筆試題(基礎卻又沒多少人做對的面向物件試題)

最近真的發現自己越來越懶了,雖然現在有點晚了,可是內疚完之後,還是得更新每個星期一篇的面試題,找了很多面試題,發現有些很基礎的就沒必要分享出來,最後找了這麼一篇經典的面試題,一開始我也還真做錯了,話不多說。來看下 2015 攜程的 JAVA 工程師的面試題

JAVA面向物件試題帶答案(牆裂推薦)

1) 在Java中,如果父類中的某些方法不包含任何邏輯,並且需要有子類重寫,應該使用(c)關鍵字來申明父類的這些方法。 a) Finalc b) Static c) Abstract d) Void2) 給定兩個java程式,如下:public interface Face{ int counter = 4

java 面向物件試題,問答題,構造方法,抽象類,繼承,多型,介面,異常總結;

一,構造方法的特點 面向物件的思想是如何在java展現的呢? 就是通過類和物件 類是一組相關的屬性和行為的集合。是一個抽象的概念。 物件是該類事物的具體表現形式。具體存在的個體。 一、抽象類的抽象方法的特點是什麼? 被abstract修飾的類稱為抽象類 特點: 1、抽象類不能有物件(不能用new關鍵字來例項化

[C/C++常見筆試試題] 程式設計基礎 - 面向物件相關、虛擬函式、程式設計技巧篇

13 面向物件相關 面向物件思想是程式設計歷史上一次偉大的創新,面向物件的提出極大地提高了程式設計的效率,為程式設計的重用性奠定了堅實的基礎,面向物件思想已經廣泛應用在現今主流的程式語言中,如C++、Java、C#等。   13.1 面向物件與面向過程有什麼區別? 面向物件 面向物件是把資

侯捷 C++面向物件高階開發(上)筆記整理

C++面向物件高階開發(上) 一、C++程式設計簡介 (1)基於物件:只有一個class的程式設計 object based 面向物件:幾個class的程式設計 object oriented (2)class的經典分類: (A)class without pointer membe

侯捷 C++面向物件高階開發(下)筆記整理

C++面向物件高階開發(下) 一、導讀 (1)泛型程式設計和麵向物件程式設計分屬不同的思維, (2)由繼承關係所形成的物件模型,包含this指標,vptr指標,vtbl虛表,虛機制,以及虛擬函式造成的多型。 二、conversion function 轉換函式 (1)通過指定關鍵

整理統計大多數企業初中級C#.net試題(個人整理)

1.“HTML.TextBox” 和 “HTML.TextBoxFor”有什麼不同? 它們兩個輸出相同的HTML, “HTML.TextBoxFor”是強型別的,但“HTML.TextBox”不是。下面是一個例項, 它僅僅建立了一個名字為“Customer

c/c++整理--c++面向物件(6)

一、瞭解c++類各成員函式的關係 寫出下面程式碼的輸出結果 #include <iostream> using namespace std; class A { int num; p

C++面向物件程式設計——類和物件(個人整理

物件: object 客觀世界中任何一個事物都可以看成一個物件,如自然物體(汽車,房子,班級...) 可以看到一個班級作為一個物件有兩個要素: 1、班級所屬系和專業,人數等靜態特徵(屬性); 2、班

js試題知識點全解(一作用域和閉包)

foo true 方式 聲明 提升 function 這樣的 all 變量提升 問題: 1.說一下對變量提升的理解 2.說明this幾種不同的使用場景 3.如何理解作用域 4.實際開發中閉包的應用 知識點: js沒有塊級作用域只有函數和全局作用域,如下代碼: if(tru

C# 面向對象零碎知識點

都是 類型 對象 tro ont ole dom abc () obgect: 所有數據類型都是obgect類型; 萬能類型 var :原來的變量不變,替換成var; 動態類型 dynamic :類似object,遍歷需要轉; is as: 類型轉換運算符; (類型)對象

100道Java試題收集整理及參考答案

java面試題不積跬步無以至千裏,這裏會不斷收集和更新Java基礎相關的面試題,目前已收集100題。1.什麽是B/S架構?什麽是C/S架構B/S(Browser/Server),瀏覽器/服務器程序C/S(Client/Server),客戶端/服務端,桌面應用程序2.你所知道網絡協議有那些?HTTP:超文本傳輸

C++面向物件程式設計-基於Visual C++ 2010》讀書筆記

資料型別與基本運算 字串常量按字元書寫順序依次儲存在記憶體中,並在最後存放空字元’\0’表示字串常量的結束。ASCII字元在記憶體中佔1個位元組,而中文字元佔2個位元組 有名常量是指用關鍵字const修飾的變數。由於該變數只能讀取,而不能被修改,所以 也稱為常變數。有名

C++面向物件程式設計-課程簡介

##教學大綱 課程講授了C++程式設計有關的概念和語法,使你能夠使用C++語言,以面向物件的方法編寫可維護性、可擴充性好的,較大規模的程式。要求學習者已經掌握C語言程式設計。這門課將帶你掌握C++語言中類、物件、運算子過載、繼承、多型等面向物件的程式設計方法,以及模板、標準模板庫STL等