1. 程式人生 > 其它 >05- 類和物件

05- 類和物件

技術標籤:C++

面向物件

將日常生活中習慣的思維方式引入程式設計中,將需求中的概念直觀的對映到解決方案中。
以模組為中心構建可複用的軟體系統,提高軟體產品的可維護性和可擴充套件性

C++類和物件

C++是一門面向物件的程式語言,理解 C++,首先要理解**類(Class)物件(Object)**這兩個概念

生活中的類和物件

:指的是一類事物,是一個抽象的概念。類是一種模型,這種模型可以創建出不同的物件實體。

物件

物件實體是類模型的一個具體例項,物件:指的是屬於某個類的具體實體。

C++ 中的類(Class)可以看做C語言中結構體(Struct)的升級。結構體是一種構造型別,可以包含若干成員變數,每個成員變數的型別可以不同,可以通過結構體來定義結構體變數,每個變數擁有相同的性質。

程式碼示例

#include <stdio.h>

//定義結構體 Student
struct Student{
    //結構體包含的成員變數
    char *name;
    int age;
    int score;
};

// 宣告函式
void show(struct Student *);

int main(){
    struct Student stu;
    //為成員變數賦值
    stu.name = "curry";
    stu.age = 10;
    stu.score = 98;
    //呼叫函式
    show(&
stu); return 0; } //結構體的成員變數 void show(struct Student *pst){ printf("%s的年齡是 %d\n,成績是 %d\n", pst->name, pst->age, pst->score); }

程式碼執行結果

curry的年齡是10,成績是98

C++ 中的類也是一種構造型別,但是進行了一些擴充套件,類的成員不但可以是變數,還可以是函式。通過類定義出來的變數叫做“物件”。

程式碼示例

#include <iostream>
/**
 * 類和物件
 */
using namespace
std; //通過class關鍵字定義學生類 class Student{ public: // 定義變數 char *name; int age; float score; // 宣告函式 void say(){ // 輸出結果 cout << name << "的年齡是:" << age <<", 成績是:" << score << endl; } }; int main() { //建立物件 Student stu; //為類的成員變數賦值 stu.name = "curry"; stu.age = 10; stu.score = 92.5f; //呼叫函式 stu.say(); return 0; }

類之間的基本關係

類的封裝

  1. 把變數(屬性)和函式(操作)合成一個整體,封裝在一個類中。
  2. 對變數和函式進行訪問控制。

訪問許可權

  1. 在類的內部(作用域範圍內),沒有訪問許可權之分,所有成員可以相互訪問。
  2. 在類的外部(作用域範圍外),訪問許可權才有意義:public,private,protected。
  3. 在類的外部,只有public修飾的成員才能被訪問,在沒有涉及繼承與派生時, private和protected是同等級的,外部不允許訪問。
訪問屬性屬性物件內部物件外部
public公有可訪問可訪問
protected保護可訪問不可訪問
private私有可訪問不可訪問

程式碼示例

#include <iostream>
/**
 * 類的封裝
 */
using namespace std;

// 建立類Person
class Person{
public: // 公共許可權
    string name; // 姓名
protected: // 保護許可權
    string car;
private: // 私有許可權
    int password;

public:
    void function(){
        /**
         * 所有許可權類內都可以訪問
         */
         name = "curry";
         car = "小學生跑車";
         password = 123446;
    }
};

// 宣告函式
void test(){
    // 建立物件
    Person p;
    p.name = 'kobe';
    // p.car = "法拉第";  保護許可權,在類外不可以訪問
    // p.password = 134566; 私有許可權,在類外不可以訪問
}

int main() {
    cout << "Hello, World!" << endl;
    // 呼叫函式
    test();
    return 0;
}

成員屬性設定

使用成員函式可使得我們對變數的控制處理更加精細。

程式碼示例

#include <iostream>
/**
 * 將成員屬性設定成私有屬性
 */
using namespace std;

// 建立Person類
class Person{
public:
    // 設定姓名
    void setName(string name){
        myName = name;
    }
    // 獲取姓名
    string getName(){
        return myName;
    }
    // 設定年齡
    void setAge(int age){
        // 檢測年齡
        if(age < 0 || age > 30){
            cout << "不好意思,你不是學生了" << endl;
            return;
        }
        myAge = age;
    }

    // 獲取年齡
    int getAge()
    {
        return myAge;
    }
private:
    string myName;  // 姓名
    int myAge = 18;
};

// 宣告函式
void test(){
    // 建立物件
    Person p1;
    // 對於姓名,可以設定也可以獲取
    p1.setName("curry");
    cout << "p1的姓名是:" << p1.getName() << endl;

    // 年齡的是隻讀狀態,不可以設定
    p1.setAge(55);
    cout << "p1的年齡為:" << p1.getAge() <<endl;
}
int main() {
    // 呼叫函式
    test();
    return 0;
}

程式執行結果