c++類定義

一、類的基本定義和使用

類是c++中一種自定義的數據類型,可以用來封裝數據和方法。類由成員變量和成員函數組成。以下是一個簡單的類定義:

class Person {
public:
    string name;
    int age;
    void printInfo() {
        cout << "name:" << name << ", age:" << age << endl;
    }
};

在上面的代碼中,我們定義了一個Person類,它有兩個成員變量(name和age)和一個成員函數(printInfo)。成員變量和成員函數可以使用public、protected、private關鍵字進行訪問控制。

使用該類也很簡單:

//創建對象
Person p;
//給成員變量賦值
p.name = "Bob";
p.age = 20;
//調用成員函數
p.printInfo();

輸出結果為:name:Bob, age:20。

二、構造函數和析構函數

構造函數和析構函數是類中非常重要的概念。構造函數用於對象的初始化,而析構函數用於對象的銷毀。

以下是一個簡單的構造函數和析構函數的定義:

class Person {
public:
    string name;
    int age;
    //構造函數
    Person(string n, int a) {
        name = n;
        age = a;
        cout << "Constructor is called!" << endl;
    }
    //析構函數
    ~Person() {
        cout << "Destructor is called!" << endl;
    }
    void printInfo() {
        cout << "name:" << name << ", age:" << age << endl;
    }
};

在上面的代碼中,我們定義了一個帶參數的構造函數和一個析構函數。我們創建對象時,將自動調用構造函數進行初始化,銷毀對象時將自動調用析構函數。

使用該類也很簡單:

//創建對象
Person p("Bob", 20);
//調用成員函數
p.printInfo();

輸出結果為:Constructor is called!
name:Bob, age:20
Destructor is called!

三、訪問控制

c++中有三種訪問控制權限:public、protected和private。public表示該成員可以被類的外部訪問,protected表示該成員可以被類的子類訪問,private表示該成員只能在類的內部訪問。

以下是一個具體的例子:

class Person {
public:
    string name;
    //公有成員函數
    void setName(string n) {
        //可以訪問私有成員變量
        this->name = n;
        //可以訪問私有成員函數
        this->setAge(20);
    }
protected:
    int age;
    //受保護的成員函數
    void setAge(int a) {
        //只能在類內部訪問私有成員變量
        this->age = a;
    }
private:
    string gender;
};

在上面的代碼中,我們定義了一個Person類,它有一個public成員函數(setName)、一個protected成員變量(age)和一個private成員變量(gender)。在public成員函數中,我們可以訪問私有成員變量和私有成員函數,而在類的外部同樣可以訪問該函數。

四、繼承和多態

繼承是面向對象程序設計中的一個重要概念。它可以幫助我們實現代碼的復用。子類可以繼承父類的成員變量和成員函數,並且還可以擴展自己的新的成員變量和成員函數。

以下是一個簡單的繼承的例子:

class Student : public Person {
public:
    int studentId;
    //子類的構造函數
    Student(string n, int a, int id) : Person(n, a) {
        studentId = id;
    }
    //子類的成員函數
    void printStudentInfo() {
        cout << "name:" << name << ", age:" << age << ", studentId:" << studentId << endl;
    }
};

在上面的代碼中,我們定義了一個Student類,它繼承了Person類的成員變量和成員函數,同時還有自己的成員變量(studentId)和成員函數(printStudentInfo)。

使用該類也很簡單:

//創建對象
Student s("Amy", 18, 20210001);
//調用成員函數
s.printStudentInfo();

輸出結果為:name:Amy, age:18, studentId:20210001。

多態是面向對象程序設計中的另一個重要概念。它允許我們按照統一的接口而非具體的實現來調用對象。c++中實現多態有兩種方式:虛函數和純虛函數。

以下是一個簡單的虛函數的例子:

class Shape {
public:
    //虛函數
    virtual double getArea() {
        return 0;
    }
};
class Triangle : public Shape {
public:
    int base;
    int height;
    Triangle(int b, int h) {
        base = b;
        height = h; 
    }
    //重寫虛函數
    double getArea() {
        return 0.5*base*height;
    }
};
class Square : public Shape {
public:
    int side;
    Square(int s) {
        side = s;
    }
    //重寫虛函數
    double getArea() {
        return side*side;
    }
};

在上面的代碼中,我們定義了一個抽象類Shape,它有一個虛函數(getArea)。我們繼承Shape,實現了具體的圖形類Triangle和Square。這些具體的類重寫了抽象類Shape中的虛函數。

使用該類也很簡單:

//創建對象
Shape *s1 = new Triangle(10, 5);
Shape *s2 = new Square(8);
//調用虛函數
cout << "Triangle area is: " <getArea() << endl;
cout << "Square area is: " <getArea() << endl;

輸出結果為:Triangle area is: 25,Square area is: 64。

五、模板類

c++中的模板類可以幫助我們快速實現通用類。模板類是一種特殊的類,它可以使用一個或多個類型作為參數。

以下是一個簡單的模板類的定義:

template 
class Stack {
private:
    T *data;
    int topIndex;
    int size;
public:
    //構造函數
    Stack(int s) {
        data = new T[s];
        topIndex = -1;
        size = s;
    }
    //析構函數
    ~Stack() {
        delete[] data;
    }
    //壓棧函數
    void push(T d) {
        if (topIndex = 0) {
            return data[topIndex--];
        }
        return NULL;
    }
};

在上面的代碼中,我們定義了一個模板類Stack,它有一個類型參數T。該類有兩個成員變量(data和topIndex)和兩個成員函數(push和pop)。成員函數可以使用T類型作為參數和返回值。

使用該類也很簡單:

//創建Stack對象
Stack s(100);
//壓棧
s.push(10);
s.push(20);
//彈棧
cout << s.pop() << endl;
cout << s.pop() << endl;

輸出結果為:20,10。

原創文章,作者:HQGXJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/331781.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HQGXJ的頭像HQGXJ
上一篇 2025-01-20 14:10
下一篇 2025-01-20 14:11

相關推薦

  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python中的隊列定義

    本篇文章旨在深入闡述Python中隊列的定義及其應用,包括隊列的定義、隊列的類型、隊列的操作以及隊列的應用。同時,我們也會為您提供Python代碼示例。 一、隊列的定義 隊列是一種…

    編程 2025-04-29
  • Python符號定義和使用方法

    本文將從多個方面介紹Python符號的定義和使用方法,涉及注釋、變量、運算符、條件語句和循環等多個方面。 一、注釋 1、單行注釋 # 這是一條單行注釋 2、多行注釋 “”” 這是一…

    編程 2025-04-29
  • Python編程技巧:如何定義一個函數n!,並計算5!

    在這篇文章中,我們將研究如何使用Python編程語言定義一個能夠計算階乘的函數,並且演示如何使用該函數計算5!。 一、階乘函數的定義 在Python中,我們可以使用一個簡單的遞歸函…

    編程 2025-04-29
  • Python定義兩個列表的多面探索

    Python是一種強大的編程語言,開放源代碼,易於學習和使用。通過Python語言,我們可以定義各種數據類型,如列表(list)。在Python中,列表(list)在處理數據方面起…

    編程 2025-04-29
  • Python定義變量

    Python是一門高級編程語言,變量是Python編程中非常重要的一個概念。Python的變量定義方式非常簡單,可以在程序中隨時定義一個變量來存儲數據,這方便了整個程序的邏輯編寫,…

    編程 2025-04-28
  • Python中如何定義一個變量

    Python是一種高級編程語言,使用它您可以輕鬆地定義和操作變量。Python中的變量屬於動態類型變量,因此不需要在定義變量時指定其類型,而是在變量分配之前自動確定變量的數據類型。…

    編程 2025-04-28
  • Python編程:如何定義一個計算三角形面積的函數

    計算三角形面積是幾何學中的一個基礎問題。在Python編程中,我們可以通過定義一個函數來計算任意三角形的面積。本文將從以下幾個方面對Python定義一個計算三角形面積的函數進行闡述…

    編程 2025-04-28
  • Python定義函數需要聲明參數類型嗎?

    在Python中,函數定義時不需要聲明參數類型。這意味着,您可以將任何類型的值作為函數參數傳遞,而不必擔心數據類型是否匹配。 一、Python函數參數類型的靈活性 Python函數…

    編程 2025-04-28

發表回復

登錄後才能評論