Static castУ мові C++ оператор Синтаксисstatic_cast < type > ( object )
Обмежень на тип У загальному випадку Помилки можливі у таких випадках:
Застосування
struct Type {
// конструктор з одним аргументом для приведення типу int до типу Type
Type ( int );
// перевантажений оператор для приведення типу Type до типу double
operator double () const;
};
int main () {
Type x, y;
int i;
double d;
// виклик конструктора з одним аргументом
x = y + static_cast< Type >( i );
// виклик перевантаженого оператора приведення типу
d = static_cast< double >( x );
return 0;
}
Конструктор може мати більше аргументів, але для них повинні бути задані значення за замовчуванням: struct Type {
// конструктор з кількома аргументами для приведення типу Type до типу int;
// для другого і третього аргументів указані значення за замовчуванням
Type ( int, int = 10, float = 0.0 );
};
Приклади// Отримати відсоток влучень
double hitpercent (
const int aHitCount, // кількість влучень
const int aShotCount // кількість пострілів
) {
if ( aShotCount == 0 ) return 0.0;
// Приведення типів до double відбувається для виклику оператора ділення дійсних чисел
// замість оператора ділення цілих чисел, тому результатом буде дійсне, а не ціле, число
return static_cast< double >( aHitCount * 100 ) / static_cast< double >( aShotCount );
}
// наступні рядки еквівалентні
// використання оператора static_cast
string s = static_cast< string >( "Hello!" );
// виклик конструктора з одним аргументом
string s = string( "Hello!" );
// використання оператора "круглі дужки"
string s = (string) "Hello!";
string s = static_cast< string >( 5 ); // не компілюється, компілятор не може знайти підхожий конструктор
Див. такожПримітки
|
Portal di Ensiklopedia Dunia