1. 程式人生 > 其它 >C++中函式引數:物件指標、物件、引用

C++中函式引數:物件指標、物件、引用

技術標籤:C++學習c++

#include <iostream>

class test{
public:
    test(int a,int b):x(a),y(b){
        std::cout<<"test t:"<<x<<"  "<<y<<std::endl;
    }

    ~test() {
        std::cout << "~test()" << std::endl;        
    }
public: int x; int y; }; //指標來定義形參 void alterTest0(test *p) { p->x=100; p->y=100; } //引用來定義形參 void alterTest1(test &p) { p.x=200; p.y=200; } //物件本身來定義形參 void alterTest2(test p) { p.x=300; p.y=300; } int main(int argc, char* argv[]) { test t(10,10); std::cout<<"test t:"
<<t.x<<" "<<t.y<<std::endl; std::cout<<"\n-----------------------------------------------------"<<std::endl; alterTest2(t); std::cout<<"test t 物件本身做實參:"<<t.x<<" "<<t.y<<std::endl; std:
:cout<<"\n-----------------------------------------------------"<<std::endl; alterTest0(&t); std::cout<<"test t 物件指標做實參:"<<t.x<<" "<<t.y<<std::endl; std::cout<<"\n-----------------------------------------------------"<<std::endl; alterTest1(t); std::cout<<"test t 物件引用做實參:"<<t.x<<" "<<t.y<<std::endl; return 0; }

輸出:
在這裡插入圖片描述說明問題:

  1. 物件傳參:不會改變物件成員的值,(為什麼呼叫一次解構函式?)
  2. 物件指標和物件引用都會改變物件成員的值