如果main函數用堆實例化一個對象,傳參的時候為什么也要加上一個“*”?
#include <iostream>
using namespace std;
/**
?* 定義Coordinate類
?* 友元函數:display
?* 數據成員:m_iX、m_iY
?*/
class Coordinate
{
? ? // 友元函數
? ? friend void display(Coordinate &coordinate);
public:
Coordinate(int x, int y)
{
m_iX = x;
m_iY = y;
}
public:
int m_iX;
int m_iY;
};
/**
?* display函數用于顯示m_iX、m_iY的值
?*/
void display(Coordinate &coordinate)
{
cout << "m_iX:" << coordinate.m_iX << endl;
cout << "m_iY:" << coordinate.m_iY << endl;
}
int main(void)
{
? ? // 實例化Coordinate對象
? ? Coordinate *coordinate = new Coordinate(1,2);
? ? // 調用display函數
? ? display(*coordinate);
? ? delete coordinate;
? ? coordinate = NULL;
return 0;
}
就比如這一段代碼,在堆中實例化了一段空間,用指針指向它,但調用display的時候括號里的“*”代表了什么?
2020-02-09
指針和引用都沒搞清楚就跳到友元了??
2018-10-18
哈哈,要友善一點嘛,直接學c++怎么了
引用和指針參數傳遞其實就是abab的原則,
地址 a, 對象 b,要么a對a傳遞,要么b對b傳遞,
其中a對a傳遞為指針傳遞,傳的是地址。
b對b傳遞為對象傳遞,傳的是對象本身。
另外b對b傳遞還能用別名,給b取個名字b1,
對b1操作從而改變b,因為本質上b1和b是同一個對象
建議用指針或者引用,速度比較快
2018-10-16
c不會就看c++?
2018-10-12
coordinate只是一段地址,*coordinate才是對象。display在傳參是需要傳入的是對象