odniesienia w C++ są konstruktu conveneint które pozwalają nam do uproszczenia następujący kod C:shared_ptr i odwołań w C++
f(object *p){
//do something
}
int main(){
object* p = (object*) calloc(sizeof(object));
f(p);
}
do
f(object& o){
//do something
}
int main(){
object o = object();
f(o);
}
Wspólne wskaźniki są kolejne udogodnienie w C++, który uprości pamięć zarządzanie. Jednak nie jestem pewien, jak przekazać shared_ptr
do funkcji, takich jak f(object& o)
, który przyjmuje argumenty przez odniesienie?
f(object& o){
//do something
}
int main(){
shared_ptr<object> p (new object());
f(*p);
}
Czy współużytkowany wskaźnik zostanie inkrementowany, gdy jego obiekt zostanie przekazany przez odniesienie do funkcji?
Zamiast 'object * p = (object *) calloc (sizeof (object));' powinieneś użyć 'object * p = new object(); ', więc konstruktor zostanie wywołany! (Możesz też 'calloc' następnie umieścić' 'new'.) – strager
Powinieneś poczekać kilka godzin, aby dać ludziom czas na znalezienie i odpowiedź na twoje pytanie, albo pójdziesz rzucić shuffle, a ludzie nie będą mieli szansa na poprawienie odpowiedzi dzięki komentarzom. Gdy myślisz, że kurz opadł, wybierz najbardziej pomocną odpowiedź. – GManNickG
Będzie o tym pamiętać w przyszłości. Dzięki! – dzhelil