1.類與對象
類是事物的抽象。類的對象就是類的具體化,實際化
2.C++三大特性
繼承、封裝、多態
3.C++父類與子類繼承過程中,子類的特點?
子類擁有父類的所有屬性和行為
子類就是一種特殊的父類
子類對象可以當作父類對象使用
子類中可以添加父類沒有的方法和屬性
4.C++過程中多態是怎么實現的?
1:用virtual關鍵字申明的函數叫做虛函數,虛函數肯定是類的成員函數。
2:存在虛函數的類都有一個一維的虛函數表叫做虛表,類的對象有一個指向虛表開始的虛指針。虛表是和類對應的,虛表指針是和對象對應的。
3:多態性是一個接口多種實現,是面向對象的核心,分為類的多態性和函數的多態性。
4:多態用虛函數來實現,結合動態綁定.
5:純虛函數是虛函數再加上 = 0;
6:抽象類是指包括至少一個純虛函數的類。
純虛函數:virtual void fun()=0;即抽象類!必須在子類實現這個函數,即先有名稱,沒有內容,在派生類實現內容。
5.C++多態的實現方式有幾種?
第一種是函數重載;第二種是模板函數;第三種是虛函數
(1)靜態多態(重載,模板)
是在編譯的時候,就確定調用函數的類型。
(2)動態多態(覆蓋,虛函數實現)
在運行的時候,才確定調用的是哪個函數,動態綁定。運行基類指針指向派生類的對象,并調用派生類的函數。
虛函數實現原理:虛函數表和虛函數指針。
純虛函數: virtual int fun() = 0;
6.C++多態的作用
(游戲程序實例)在面向對象的程序設計中,使用多態能夠增強程序的可擴充性,即程序需要修改或增加功能時,只需改動或增加較少的代碼
7.繼承的作用
1、繼承可以減少重復的代碼。比如父類已經提供的方法,子類可以直接使用,不必再去實現。
2、繼承是多態性的前提。當然使用繼承的同時也提高了類的耦合度
8.繼承實現的方式
C++繼承的一般語法為:
class 派生類名:[繼承方式] 基類名{
派生類新增加的成員
};
9.什么是派生類?
派生類應該是指子類的子類
子類是指直接繼承基類的類;
其中子類也是派生類,但是派生類一般是指子類的子類、孫子類、曾孫子類等等
10.C++中支不支持多重繼承?
支持
1,一個子類可以擁有多個父類;
2,子類擁有所有父類的成員變量;
3,子類繼承所有父類的成員函數;
4,子類對象可以當作任意父類對象使用
class C:public A, public B{
};
11.繼承權限問題
public、protected、private 指定繼承方式
不同的繼承方式會影響基類成員在派生類中的訪問權限。
-
public繼承方式
?基類中所有 public 成員在派生類中為 public 屬性;
?基類中所有 protected 成員在派生類中為 protected 屬性;
?基類中所有 private 成員在派生類中不能使用。 -
protected繼承方式
?基類中的所有 public 成員在派生類中為 protected 屬性;
?基類中的所有 protected 成員在派生類中為 protected 屬性;
?基類中的所有 private 成員在派生類中不能使用。 -
private繼承方式
?基類中的所有 public 成員在派生類中均為 private 屬性;
?基類中的所有 protected 成員在派生類中均為 private 屬性;
?基類中的所有 private 成員在派生類中不能使用。
12.C語言和C++的區別
面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
13. C++封裝
數據封裝是一種把數據和操作數據的函數捆綁在一起的機制,數據抽象是一種僅向用戶暴露接口而把具體的實現細節隱藏起來的機制。
C++ 通過創建類來支持封裝和數據隱藏(public、protected、private)。我們已經知道,類包含私有成員(private)、保護成員(protected)和公有成員(public)成員。
輸入學號,輸出學號的后三位,并輸出并求出0到后三位之前數的和
#include<iostream>
#include<string.h>
using namespace std;int main() {char s[20];cin>>s;int len=strlen(s);int num=0;for(int i=len-3; i<=len-1; i++) {num*=10;num+=s[i]-'0';}cout<<num<<endl;if(num%2==0)cout<<(num/2)*(num+1)<<endl;else {cout<<(num/2)*(num+1)+(num/2+1)<<endl;}}