Zmienna var w C#, a C++

0

Ostatnio na kursie C# tutaj: http://www.microsoftvirtualacademy.com/training-courses/c-fundamentals-for-absolute-beginners odkryłem istnienie zmiennej w C# nazwanej var. Przyjmuje ona albo tekst, cyfrę, obiekt itp. i to jest coś czego nie ma w C++, ale może wiecie czy można jakoś "obejść" to ograniczenie? Chodzi mi o to ,żeby w C++ użytkownik podawał zmienną lecz mogłaby ona być liczbą lub stringiem.

0
OrientMantis24 napisał(a):

Ostatnio na kursie C# tutaj: http://www.microsoftvirtualacademy.com/training-courses/c-fundamentals-for-absolute-beginners odkryłem istnienie zmiennej w C# nazwanej var. Przyjmuje ona albo tekst albo cyfrę

Niedokładnie, bo piszesz to tak jakby var mogło być tylko intem/floatem/czymśtam i Stringiem. Do vara można też przypisać obiekt klasy/struktury czy typy anonimowe.

2

W c++ ten mechanizm umożliwia auto. Warto dodać, że to nadal jest silne typowanie. Jedyna różnica jest taka, że zamiast pisać explict typ zmiennej pozostawiasz tę kwestię w rękach kompilatora.

4

odkryłem istnienie zmiennej w C# nazwanej var. Przyjmuje ona albo tekst, cyfrę, obiekt itp. i to jest coś czego nie ma w C++

Już jest.

var czy auto to nie jest żaden nowy, "uniwersalny" typ, tylko informacja dla kompilatora by „zgadł” typ na podstawie przypisanej wartości.

var i = 42;
// zmienna i jest na stałe typu int, więc to przypisanie będzie błędem:
i = "ala ma kota";
// ale to jest ok:
i = 555;

Chodzi mi o to ,żeby w C++ użytkownik podawał zmienną lecz mogłaby ona być liczbą lub stringiem.
Tego nie da się zrobić za pomocą var.

0

To mechanizm, znany może bardziej z systemów typów języków funkcyjnych, który nazywa się: inferencja typów (type inference).

3

Dodam, że o ile var w C# i auto w C++ zaoszczędzają jedynie pisania, nic praktycznie nowego nie dając, to w C# do dynamicznego typowania służy słowo dynamic:

dynamic foo = new KlasaA();
foo.a(); // metoda klasy A
foo = new KlasaB();
foo.b(); // metoda klasy B
foo = 42;

w C++ tego nie ma - ale w bibliotece Boost jest coś co się nazywa Any, i chyba do tego służy. nie bawiłem się.

1 użytkowników online, w tym zalogowanych: 0, gości: 1