Fandom

C/C++

Różnica pomiędzy new oraz new()

53strony na
tej wiki
Dodaj nową stronę
Dyskusja0 Udostępnij

W przypadku typów z własnymi konstruktorami w zasadzie brak różnicy w tworzeniu obiektu za pomocą new oraz new(). Np.:

class Test
{
 int a;
public:
 Test() { a=0; }
};
int main()
{
 Test *a = new Test;
 Test *b = new Test();
 delete a;
 delete b;
 return 0;
}

W kodzie podanym wyżej wyrażenie new Test bedzie miało dokładnie takie samo konsekwencje jak wyrażenie new Test(). Różnica istnieje dla typów prostych nie posiadających własnego konstrukora. Wówczas oprócz alokacji pamięci dokonywana jest inicjacja wartością taką jaką zainicjowana zostałaby zmienna statyczna tego typu. Przykład:

#include 


using namespace std;

int main()
{
	long *a_ptr = new long int;
	long *b_ptr = new long int();

	cout<<"*a_ptr: "<<*a_ptr
           <<"\n*b_ptr: "<<*b_ptr<

Jeśli uruchomimy ten program wynik może być taki: *a_ptr: -1163005939
 *b_ptr: 0
Zmienna statyczna typu long int zostałaby zainicjowana wartością 0 dlatego w przypadku *b_ptr otrzymujemy taka wartość. Wyrażenie *a_ptr będzie miało przypadkowe wartości. ;>

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Więcej z Fandomu

Losowa wiki