c++ 類的函式引用 指標

MKT-porter發表於2024-07-27
cmake_minimum_required(VERSION 3.0)  # 指定 CMake 的最低版本要求

project(MyProject)  # 設定專案名稱

# 新增可執行檔案,並指定原始檔
add_executable(my_executable main.cpp)

  CMakeLists.txt

#include <iostream>

// 定義一個簡單的類 MyClass
class MyClass {
public:
    int value;
    MyClass(int v) : value(v) {}
};

// 修改傳入物件的狀態,傳入的是物件的副本
void modifyObjectCopy(MyClass obj) {
    obj.value = 100; // 修改傳入物件的副本
}

// 修改會影響原始物件的狀態,傳入物件的引用
void modifyObjectReference(MyClass &ref) {
    ref.value = 100; // 修改傳入物件的值
}

// 使用指標修改傳入物件的狀態,需檢查空指標
void modifyObjectPointer(MyClass *ptr) {
    if (ptr != nullptr) {
        ptr->value = 100; // 修改傳入物件的值
    }
}

int main() {
    // 建立 MyClass 物件
    MyClass obj(10);

    // 演示修改傳入物件的狀態,傳入物件的副本
    modifyObjectCopy(obj); // 傳遞物件的副本
    std::cout << "After modifyObjectCopy, Original value: " << obj.value << std::endl; // 輸出原始物件的值,未被修改

    // 演示修改會影響原始物件的狀態,傳入物件的引用
    modifyObjectReference(obj); // 直接傳遞物件引用
    std::cout << "After modifyObjectReference, Modified value: " << obj.value << std::endl; // 輸出修改後的值

    // 演示使用指標修改傳入物件的狀態,傳入物件的地址
    modifyObjectPointer(&obj); // 傳遞物件的地址
    std::cout << "After modifyObjectPointer, Modified value: " << obj.value << std::endl; // 輸出修改後的值

    return 0;
}

  

相關文章