C++中函式引數:物件指標、物件、引用
阿新 • • 發佈:2021-01-07
#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;
}
輸出:
說明問題:
- 物件傳參:不會改變物件成員的值,(為什麼呼叫一次解構函式?)
- 物件指標和物件引用都會改變物件成員的值