強化有關C 的函式基礎運用方法

2021-10-04 10:21:38 字數 4719 閱讀 3143

知識點1【強化訓練字串類string】

知識點2【繼承和派生的概述】(了解)1-2

繼承的優點:減少**的冗餘  提高**的重用性

知識點3【繼承的格式】

繼承方式分類:

父類個數分類:

注意:案例1:公有繼承 public

總結:案例2:保護繼承protected

總結: protected繼承

案例3:私有繼承 private

總結:private私有繼承

總結:知識點4【繼承的內層結構】(了解)(vs studio)

知識點5【繼承中的構造和析構的順序】

總結:知識點6【子類中 有父類、物件成員 構造和析構的順序】

總結:(重要)

知識點7【詳解 子類中的構造】

1、子類會預設呼叫  父類的 無參構造

2、子類 必須顯示 使用初始化列表  呼叫 父類的有參構造

知識點8【父類和子類的同名 成員變數 處理】

1、當 父類和子類 成員變數同名時  在子類就近原則 選擇本作用域的子類成員

2、如果在子類中 必須使用父類中的同名成員  必須加上父類的作用域。

3、子類可以借助 父類的公有方法 間接的操作 父類的私有資料(不可見的資料)

知識點9【父類和子類的同名 成員函式 處理】

案例:1子類繼承父類所有成員函式 和成員變數

案例2:子類和父類 同名成員函式

知識點1【強化訓練字串類string】

mystring.h

#ifndef

mystring_h #define mystring_h #include using namespace std;

class mystring ;  #endif // mystring_h

mystring.cpp

#include

「mystring.h」 #include#include using

namespace std; mystring::mystring()   mystring::mystring(const mystring &ob)

mystring::~mystring() }  int mystring::size()   char& mystring::operator(int

index)//index表示陣列的下標     

else           //根據ob.str的大小申請空間     this->str = new

char[ob.size+1];     strcpy(this->str,

ob.str);      this->size =

ob.size;      return *this; }  mystring &mystring::operator=(const char

*str)      

this->str = new char[strlen(str)+1];     strcpy(this->str, str);     this->size = strlen(str);     return *this; }  mystring& mystring::operator+(const

mystring &ob)       return newstring; }  mystring &mystring::operator+(const char

*str)       return newstring; }  bool mystring::operator==(const mystring

&ob)      

return false; }  bool

mystring::operator==(const char *str)      

return false; } ostream& operator<<(ostream &out, mystring

&ob)       //獲取鍵盤輸入的字串     char buf[1024]="";//臨時buf     in >> buf;//先得到鍵盤輸入的資料  然後根據buf的實際大小

開闢空間      ob.str = new

char[strlen(buf)+1];     strcpy(ob.str,

buf);     ob.size = strlen(buf);      return in; }

main.cpp

#include

#include"mystring.h" using namespace std;  int main(int argc, char *ar**) ;    class

子類: 繼承方式  父類名;

繼承方式分類:

public : 公有繼承   (重要)

private : 私有繼承

protected : 保護繼承

父類個數分類:

單繼承:指每個派生類只直接繼承了乙個基類的特徵   (乙個父類 派生出 乙個子類)

多繼承:指多個基類派生出乙個派生類的繼承關係,多繼承的派生類直接繼承了不止乙個基類的特徵(多個父類  派生出 乙個子類)

注意:子類繼承父類,子類擁有父類中全部成員變數和成員方法(除了構造和析構之外的成員方法),但是在子類中,繼承的成員並不一定能直接訪問,不同的繼承方式會導致不同的訪問許可權。

案例1:公有繼承 public

//設定乙個父類 class base ;  //設定乙個子類

class son:public base }; 

void test01() }; void test02()

總結: protected繼承

父類中的public資料 

在子類中 也是protected

父類中的private資料 在子類中 是不可見的

父類中的protected資料

在子類中 是protected的

(保護繼承  父類的私有資料 在子類中 不可見  其他資料 都變保護)

案例3:私有繼承 private

//保護繼承 class son2:private base }; void test03()

總結:private私有繼承

父類中的public資料  在子類中 也是private

父類中的private資料

在子類中 是不可見的

父類中的protected資料

在子類中 是private的

(私有繼承  父類中的私有資料在子類中 不可見  其他變成私有)

總結:不管啥繼承方式:父類中的私有資料在 子類中不可見

知識點4【繼承的內層結構】(了解)(vs studio)

class base ; 

class son :public base ; int main(int

argc, char* ar**)

步驟:cl /d1

reportsingleclasslayoutson test.cpp

son類的布局:

知識點5【繼承中的構造和析構的順序】

class base

class base {

private:     int a; public:      base()    

{         cout<<「父類的無參建構函式」cout<<「父類的有參建構函式」cout<<「子類的有參建構函式 int

int」《執行結果:

案例提高:

如果父類有參構造:

base(int a, int data) {     this->a = a;     this->data = data;     cout<<「父類的有參建構函式」《子類想呼叫 父類有參構造:

//子類必須用

初始化列表 顯示的呼叫父類的有參構造 //父類名稱(引數) son(int a,int b, int c):base(a,c),b(b)//顯示的呼叫父類的有參構造 {     //this->b = b;     cout<<「子類的有參建構函式 int int」<

知識點8【父類和子類的同名 成員變數 處理】

1、當 父類和子類 成員變數同名時  在子類就近原則 選擇本作用域的子類成員

2、如果在子類中 必須使用父類中的同名成員  必須加上父類的作用域。

class base

{     //父類的私有資料 一旦涉及繼承 在子類中不可見 public:     int num; public:     base(int num)     {        

this->num = num;        

cout<<「base有參構造int」執行結果:

3、子類可以借助 父類的公有方法 間接的操作 父類的私有資料(不可見的資料)

class base

{  private:     int num;//父類的私有資料 一旦涉及繼承 在子類中不可見 public:     base(int

num)     {         this->num = num;         cout<<「base有參構造int」知識點9【父類和子類的同名 成員函式 處理】

案例:1子類繼承父類所有成員函式 和成員變數

class base {

public:     void func(void)     {        

cout<<「父類中的void

func」《案例2:子類和父類 同名成員函式

class base {

public:     void func(void)     {        

cout<<「父類中的void

func」《執行結果:

C static在c 中的運用(強化記憶)

一.static file static 檔案內靜態定義 未命名的命名空間取代檔案中的靜態宣告 在標準c 引入命名空間的概念之前,程式需要將名字宣告成static的以使其對於整個檔案有效。在檔案中進行靜態宣告的做法是從c語言繼承而來的。在c語言中,宣告為static的全域性實體在其他檔案外不可見。w...

c 基礎 方法(函式)

方法就是將一堆 進行重用的一種機制。方法就是一段 這段 可能有輸入的值 引數 可能會有返回值。乙個方法就想乙個專門做這件事的人,我們呼叫它來完成一些事情,它可能需要我們提供一些資料給它,它執行完後可能會有一些執行結果給我們。要求的資料就叫引數,返回的執行結果就是返回值。string s consol...

c語言函式的運用

1.猜數字遊戲 將選單和執行猜數字的主體都用main函式以外的自定義函式編寫,再由main函式呼叫後,執行結果 define crt secure no warnings include include include int menu return i int prtnum return gues...