2

Jak Pozbyć Się Makr ?

Języki C i C++ są ze sobą prawie w pełni kompatybilne (istnieją pewne odstępstwa, ale to temat na jeden z przyszłych artykułów). Oznacza to, że język C można traktować jako swoisty podzbiór języka C++ (kompatybilność ta jest jednym ze źródeł popularności języka C++, ponieważ wielu programistów języka C mogła dużo łatwiej migrować do języka C++,…

Kiedy Dynamiczne Wiązanie Typu Zawodzi Czyli Wirtualne Funkcje w Konstruktorze i Destruktorze

Niech dane będą klasy Base (bazowa) i Derived (pochodna dziedzicząca po Base), przy czym tworzony jest obiekt d klasy Derived wywołujący metodę g (odziedziczoną z klasy Base): #include <iostream> class Base { public: Base() { std::cout << „Base::Base()” << „\n”; } virtual ~Base() { std::cout << „Base::~Base()” << „\n”; } void f() { std::cout <<…

Konstruktor z Parametrem std::string vs Argument c-string

Tworzenie obiektu za pośrednictwem konstruktora z parametrem typu std::string (przekazywanym przez wartość lub referencję do stałej), może być problematyczne jeśli jako rzeczywisty argument przekazany zostanie literał tekstowy w stylu języka C (c-string). Aby wyjaśnić to zagadnienie rozważmy prostą klasę X, której obiekt tworzony jest jak poniżej: #include <iostream> #include <string> class X { public: X(const…