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; }