我不太確定傳遞*d和傳遞d2給建構式之間的區別是什么:
#include <iostream>
using namespace std;
class Data
{
public:
int number;
};
class Node {
public:
Data data;
Node() {};
Node(Data d) : data(d) {};
};
int main()
{
Data* d = new Data();
Node* n = new Node(*d);
Data d2;
Node* n2 = new Node(d2);
return 0;
}
我可以傳遞 *d 和 d2,但是在這兩種情況下,“Node”類中的資料成員“data”本身仍然是一個物件,對嗎?或者傳遞物件和動態物件之間甚至有區別嗎?
uj5u.com熱心網友回復:
從Node的角度來看,建構式接收一個Data物件。它不關心這個物件是否是動態分配的new。
uj5u.com熱心網友回復:
從節點的角度來看,節點的建構式需要一個 data 型別的物件,所以它只關心資料物件的型別,它不關心它在記憶體中的位置(靜態記憶體或動態記憶體) *d 和 d2 代表資料物件,所以你的代碼是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/386265.html
