我是新的C++和我得到自己迷茫過,涉及的指針/引用如何修改使用對象* C++中
如果我有這樣的功能
void func(classA *&size) {
//this is the part I don't understand what to do
}
概念如果尺寸有寬度和長度,我將如何改變長度? (基本上使用* &修改一個對象)
我是新的C++和我得到自己迷茫過,涉及的指針/引用如何修改使用對象* C++中
如果我有這樣的功能
void func(classA *&size) {
//this is the part I don't understand what to do
}
概念如果尺寸有寬度和長度,我將如何改變長度? (基本上使用* &修改一個對象)
由於size
是類型classA*
的引用,它表現爲對一個指向classA
對象的別名,並且可以與任何其他名稱,該對象可以互換使用。因此,應該修改指向的對象,像這樣:
size->length = 3;
是一樣的,如果size
宣佈型classA*
而不是classA*&
你會寫什麼。
只顯示參考無關緊要的例子,相當混亂! – juanchopanza
您描述的函數將指針作爲參數引用。
這意味着函數打算修改指針本身。
此代碼已經聞起來很糟糕。它基本上共享指向對象的所有權,而不具有由智能指針(unique_ptr,shared_ptr)引用提供的保護,並且沒有用於指示該指針是觀察者的註釋(請參閱即將推出的文檔-standard observer_ptr)。
你想知道該函數內部要做什麼。這得看情況。參數設置爲將對象的地址傳遞給函數,並從函數接收(可能不同)對象的地址。
如果這是你想要的,你可能已經知道該怎麼做。
如果你只想傳遞一個對象的引用,只需傳遞一個引用。如果你想傳遞一個指向對象的指針,只需傳遞一個指針。
如果你確實想在一個指針傳遞和接收可能不同的指針,我建議函數應該看起來更像是這樣的:
classA* func(classA* a); // returns either a or another classA
更妙的是可能是這樣的:
std::unique_ptr<classA> func(std::unique_ptr<classA> a);
因爲現在intent和語義混凝土界面。呼叫者現在無法濫用該功能(禁止故意的自我傷害)。
'if(!size)size = new classA;大小 - >長度= 1;'例如... – StoryTeller
我建議一次學習一個概念。瞭解*指針*然後瞭解*引用*或反之亦然。 – Galik