Dynamic cast

http://dbpedia.org/resource/Dynamic_cast

Dans le langage de programmation C++, l'opérateur dynamic_cast est un membre du système de run-time type information (RTTI) qui effectue une conversion de type. Cependant, contrairement au cast hérité du langage C, une vérification du type est effectuée à l'exécution, et lèvera soit une exception dans le cas des références, soit un pointeur nul dans le cas des pointeurs, si les types ne sont pas compatibles. Donc, dynamic_cast se comporte plus comme un convertisseur de type dans un langage tel que Java, plutôt qu'une conversion au sens du langage C, qui ne vérifie rien à l'exécution. rdf:langString
Il linguaggio di programmazione C++, oltre al cast esplicito stile C, dispone di altri quattro tipi di cast espliciti: const cast, dynamic_cast, e . Il costrutto dynamic_cast permette di convertire un puntatore ad un oggetto di una classe base ad uno di classe derivata, ma solo se la classe base è polimorfa (ovvero possiede almeno un metodo virtuale, distruttore virtuale incluso). La validità dell'operazione viene verificata in run-time. Qualora l'operazione non sia valida il costrutto restituisce un puntatore nullo. Esempio: rdf:langString
У мові програмування C++ оператор dynamic_cast є частиною механізму динамічної ідентифікації типів даних, який дозволяє виконувати приведення типів даних. На відміну від звичайного приведення типів у стилі С, перевірка коректності приведення типів відбувається під час виконання програми. Оператор dynamic_cast можна застосовувати до вказівників або посилань. Якщо відбувається приведення вказівника до типу, яким об’єкт фактично не є, то результатом приведення буде нульовий вказівник. При роботі з посиланнями, якщо приведення неможливе, буде згенеровано виняток (exception) std::bad_cast. Такою поведінкою оператор dynamic_cast подібний до приведення типів у таких мовах програмування, як Java, і відрізняється від приведення в мові С, де коректність приведення типу під час виконання програми не rdf:langString
В языке программирования C++ операция dynamic_cast преобразует тип данных (указатель или ссылку) вниз по иерархии наследования (из типа-предка в тип-потомок), с проверкой с помощью динамической идентификации типа данных, корректно ли приведение. Этот тип преобразования называется "нисходящим приведением типа", поскольку при нем указатель перемещается вниз по иерархии классов: от базового класса к производному классу. rdf:langString
rdf:langString Dynamic cast
rdf:langString Dynamic cast
rdf:langString Dynamic cast
rdf:langString Dynamic cast
rdf:langString Dynamic cast
xsd:integer 8543267
xsd:integer 665951374
rdf:langString Dans le langage de programmation C++, l'opérateur dynamic_cast est un membre du système de run-time type information (RTTI) qui effectue une conversion de type. Cependant, contrairement au cast hérité du langage C, une vérification du type est effectuée à l'exécution, et lèvera soit une exception dans le cas des références, soit un pointeur nul dans le cas des pointeurs, si les types ne sont pas compatibles. Donc, dynamic_cast se comporte plus comme un convertisseur de type dans un langage tel que Java, plutôt qu'une conversion au sens du langage C, qui ne vérifie rien à l'exécution.
rdf:langString Il linguaggio di programmazione C++, oltre al cast esplicito stile C, dispone di altri quattro tipi di cast espliciti: const cast, dynamic_cast, e . Il costrutto dynamic_cast permette di convertire un puntatore ad un oggetto di una classe base ad uno di classe derivata, ma solo se la classe base è polimorfa (ovvero possiede almeno un metodo virtuale, distruttore virtuale incluso). La validità dell'operazione viene verificata in run-time. Qualora l'operazione non sia valida il costrutto restituisce un puntatore nullo. Esempio: class Padre {.....};class Figlio : public Padre {.....};class Nipote : public Figlio {.....};main { Padre *p, *pObj = new Padre; Figlio *f, *fObj = new Figlio; Nipote *n, *nObj = new Nipote; p = nObj; // ok un puntatore ad una classe derivata può essere assegnato ad uno di classe base n = p; // qui il compilatore genera errore perché non sa se l'assegnamento è valido (lo si sa solo run-time) n = dynamic_cast(p); // qui si chiede di fare il controllo run-time per validare la conversione (valida in questo caso) if (n) cout << "conversione eseguita con successo"; p = fObj; n = dynamic_cast(p); // qui si chiede di fare il controllo run-time per validare la conversione (non valida in questo caso) if (!n) cout << "conversione fallita";} Si tenga presente che affinché il costrutto dynamic_cast lavori correttamente è necessario che il supporto RTTI del compilatore sia attivo (spesso, nella produzione del firmware, si sceglie di non attivare RTTI poiché questa funzionalità assorbe una quantità di risorse non trascurabile).
rdf:langString В языке программирования C++ операция dynamic_cast преобразует тип данных (указатель или ссылку) вниз по иерархии наследования (из типа-предка в тип-потомок), с проверкой с помощью динамической идентификации типа данных, корректно ли приведение. Этот тип преобразования называется "нисходящим приведением типа", поскольку при нем указатель перемещается вниз по иерархии классов: от базового класса к производному классу. В отличие от обычного приведения типа в стиле Си, проверка корректности приведения типов производится во время выполнения программы. Оператор dynamic_cast может быть применён к указателям или ссылкам. Основное назначение dynamic_cast - преобразование указателя, который содержит адрес объекта-родителя, к указателю типа объекта-потомка. При невозможности преобразования (типы не состоят в родстве) будет получен нулевой указатель. При работе со ссылками при невозможности преобразования типа будет сгенерировано исключение std::bad_cast. Таким образом, оператор dynamic_cast обнаруживает сходство в процедуре приведения типа с таким языком программирования как Java, в отличие от Си, в котором не выполняется проверка корректности приведения типа во время выполнения программы.
rdf:langString У мові програмування C++ оператор dynamic_cast є частиною механізму динамічної ідентифікації типів даних, який дозволяє виконувати приведення типів даних. На відміну від звичайного приведення типів у стилі С, перевірка коректності приведення типів відбувається під час виконання програми. Оператор dynamic_cast можна застосовувати до вказівників або посилань. Якщо відбувається приведення вказівника до типу, яким об’єкт фактично не є, то результатом приведення буде нульовий вказівник. При роботі з посиланнями, якщо приведення неможливе, буде згенеровано виняток (exception) std::bad_cast. Такою поведінкою оператор dynamic_cast подібний до приведення типів у таких мовах програмування, як Java, і відрізняється від приведення в мові С, де коректність приведення типу під час виконання програми не перевіряється.
xsd:nonNegativeInteger 69

data from the linked data cloud