Преобразующие функции

Функция-член класса Х, имя которой имеет вид operator <имя типа>, определяет преобразование из Х в тип, заданный именем типа. Такие функции называются преобразующими функциями или функциями приведения.

Для такой функции не могут быть заданы ни параметры, ни возвращаемый тип.

class X { private: int x; public: X(int n); operator int(); ... }; X::X(int n) { x = n; } X::operator int() { return x; } int a; X b(0);  
a = (int)b; // Явный вызов преобразующей функции
a = b; // Неявный вызов преобразующей функции

2 вопрос

Операция new

В С++ предлагается другой подход к выделению памяти: операция new. Это - универсальная операция, которая получает память у операционной системы и возвращает указатель на начало выделенного блока. В следующей программе продемонстрировано, как это работает:

  #include
  #include
  using namespace std;
  int main ()
  {
  char* str = "Очень длинная строка.";
  int len = strlen (str); // вычисление длины строки
  char* ptr; // определим переменную
  ptr = new char [ len +1 ]; // выделяем память, используя оператор new
  strcpy (ptr, str); // копируем str у ptr
       
  cout<< "ptr = " << ptr << endl; // содержание ptr
  delete [] ptr; // освобождение выделенной памяти, оператор delete
  return 0;
  }

Выражение

ptr = new char [ len + 1 ];

присваивает переменной ptr значение адреса блока памяти, достаточного для сохранения строке str, длину которого можно получить, используя библиотечную функцию
strlen(), добавив дополнительный байт для символа окончания строки.
Результат работы программы:

ptr = Очень длинная строка.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: