01_C++基礎

爱吃冰激凌的黄某某發表於2024-04-13

C++基礎

1.什麼是c++。

​ c++是c語言的升級版,在c的基礎上增加了很多功能。是一種高階語言。

2.什麼是物件導向,什麼又是程序導向。

​ c語言就是程序導向的,c++就是物件導向的。

舉例:a+b

​ 直接計算a+b就是程序導向。

​ 物件導向就是給a+b穿上了一層衣服。不是直接計算a+b。

3.c++的靈魂,c++的類。

​ 類大家可以把他看成c語言結構體的升級版。類的成員不僅可以是變數,也可以是函式。

4.如何定義一個類。

class student
{
public:
    char name[64];
    char age;
};

5.什麼是物件。

​ 物件是類的例項化。

6.如何定義一個物件。

直接定義:

 student my; // student就是類 my就是物件

在堆裡面定義。

student *my = new student;

刪除物件

delete my; //只能釋放堆裡面定義的,不能釋放直接定義的物件

7.怎麼訪問類的成員。

student my;
student *my1 = new student;
my.age = 18;
my1->age =19;

cout << my.age << endl;
cout << my1->age << endl;

訪問方法和C語言是一樣的,普通變數透過. 指標透過->

8.類的函式成員。

因為類裡面的成員不僅可以是變數,也可以是函式。

第一步:在類裡面宣告

第二步:實現這個函式。我們可以直接在類裡面寫,也可以寫在類的外面。

直接寫在類的裡面

class student
{
public:
    char name[64];
    int age;
    
    void test(){
      cout << 123 << endl;
    }
};

寫到類的外面

class student
{
public:
    char name[64];
    int age;
    
    void test();
};

void student::test(){ //student::表示屬於這個類裡面的函式,不加的話會被識別成普通函式。
  cout << 123 << endl;
}

訪問函式和訪問變數是一樣的。

9.類的訪問修飾符。

類的訪問修飾符就是對類的成員進行許可權管理。

​ public:表示函式和變數是公開的,任何人都可以訪問。

​ private:表示函式和變數只能在自己的類裡面自己訪問自己,不能透過物件來訪問。

​ protected:表示函式和變數只能在自己的類裡面自己訪問自己,但是可以被派生類來訪問的。

10.類函式的過載特性

​ 類函式的過載特性就是說我們可以在類裡面定義同名的函式,但是引數不同的函式。

class student
{
public:
    char name[64];
    int age;
    
    void test();
    void test(int a); //過載test函式
private:
    int haha;
};

過載函式在呼叫的時候,會根據引數的型別,然後去匹配相應的函式進行呼叫。

11.建構函式和解構函式

解構函式:假如我們定義了解構函式,當物件被刪除或者生命週期結束的時候,就會觸發解構函式。

​ 直接定義的物件會自動刪除物件呼叫解構函式, 堆裡定義的物件得delete才能刪除物件,呼叫解構函式

建構函式:假如我們定義了建構函式,就會觸發這個建構函式。

我們要怎麼定義解構函式和建構函式?

1.解構函式和建構函式的名字必須和類名一模一樣。

2.解構函式要在前面加上一個~

舉例:

class student
{
public:
    student();
    ~student();
    char name[64];
    int age;

    void test();
    void test(int a);
private:
    int haha;
};

student::student(){
  cout << "hello" << endl;
}

student::~student(){
  cout << "bye" << endl;
}

建構函式是可以被過載的。

解構函式不能被過載。

12.類的繼承

什麼是類的繼承?

​ 類的繼承允許我們在新的類裡面繼承父類的public還有protected部分,private是不能被繼承的。

​ 當我們覺得這個類不好的時候,可以使用類的繼承,新增我們需要的功能。

格式:

class 兒子:public 爸爸{
public:
........
Protected:
}

例子:
class mystudent:public student
{
public:
    int grade;
};

如果在子類裡面去訪問父類的成員?

​ 也是透過.和->來訪問的。

13.虛擬函式和純虛擬函式

虛擬函式:有實際定義的,允許派生類對他進行覆蓋式的替換,virtual來修飾。

純虛擬函式:沒有實際定義的虛擬函式就是純虛擬函式。

舉例:

 virtual void test(); //虛擬函式
 virtual void testa(){} //純虛擬函式

怎麼定義一個虛擬函式?

​ 用virtual來修飾,虛擬函式是用在類的繼承上的。

虛擬函式的優點?

​ 可以預留介面,實現分工合作。

相關文章