ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 7) онлайн

Строки как члены классов

Строки часто используют в качестве членов классов. В следующем примере, ва- риации программы OBJPART из главы 6, используются строки, содержащие назва- ния частей изделий.

// strpart.cpp

// использование строк в классе #include <iostream> #include <cstring> using namespace std; ///////////////////////////////////////////////////////////

class part {

 

private:

    char partname [ 30 ]; // название

    int partnumber;       // номер

    double cost;          // цена

  public:

    void setpart ( char pname [ ], int pn, double c )

      {

        strcpy ( partname, pname );

        partnumber = pn;

        cost = c;

      }

    void showpart ( )

      {

        cout << "\nНазвание=" << partname;

        cout << ", номер=" << partnumber;

        cout << ", цена=$" << cost;

      }

};

///////////////////////////////////////////////////////////

int main ( )

{

  part part1, part2;

 

  part1.setpart ( "муфта", 4473, 217.55 );

  part2.setpart ( "вороток", 9924, 419.25 );

  cout << "\nПервая деталь: "; part1.showpart ( );

  cout << "\nВторая деталь: "; part2.showpart ( );

  cout << endl;

 

  return 0;

}

 

В этой программе определены два объекта класса part, и им присвоены значе- ния в методе setpart(). Затем программа выводит эти объекты, используя метод showpart(). Приведем вывод:

Первая деталь:

Название=муфта, номер=4473, цена=$217.55 Вторая деталь:

Название=вороток, номер=9924, цена=$419.25

Чтобы уменьшить размер программы, мы удалили номер модели из перемен- ных класса.

В методе setpart() мы используем библиотечную функцию strcpy() для копи- рования строки из аргумента pname в переменную класса partname. Таким обра- зом, этот метод служит для строковой переменной для тех же целей, что и опе- рация присваивания для простых переменных. (Похожая функция strncpy() принимает еще третий аргумент, определяющий максимальное количество сим- волов, которое может быть скопировано. Так можно предупредить переполне- ние массива.)

Кроме изученных нами, есть еще библиотечные функции для добавления одной строки к другой, сравнения строк, поиска определенного символа в стро- ке и выполнения многих других операций. Описание этих функций вы сможете найти в документации к вашему компилятору.

 

25