05.09.2016 Views

Стефан Р. - С++ Для чайников

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Зачем конструкторам нужны аргументы<br />

Возможность добавления аргументов к конструктору не требует особой, простите за<br />

каламбур, аргументации, но я все же приведу несколько аргументов в пользу применения<br />

аргументов. Во-первых, их использование в конструкторе достаточно удобно. Было<br />

бы несколько непоследовательно требовать от программиста сначапа конструировать<br />

объект, а затем вызывать инициализирующую функцию с тем, чтобы она проводила<br />

инициализацию, специфичную для данного объекта. Конструктор, поддерживающий<br />

аргументы, похож на магазин при автозаправке: он предоставляет полный сервис.<br />

Другая, более важная причина использования аргументов в конструкторе состоит<br />

в том, что иногда это единственный способ создать объект с необходимыми начальными<br />

значениями. Вспомните, что работа конструктора заключается в создании корректного<br />

(в смысле требований данного класса) объекта. Если какой-то созданный по<br />

умолчанию объект не отвечает требованиям программы, значит, конструктор не выполняет<br />

свою работу.<br />

Например, банковский счет без номера не является приемлемым (C++ все равно,<br />

каков номер счета, но это почему-то волнует банк). Можно создать объект BankAccount<br />

без номера, а затем потребовать от приложения вызвать некоторую функциючлен<br />

для инициализации номера счета перед использованием. Однако это нарушает<br />

наши правила, поскольку при таком подходе класс вынужден полагаться на то, что<br />

эти действия будут выполнены внешним приложением.<br />

Как использовать конструктор с аргументами<br />

Идея использования аргументов проста. Как известно, функции-члены могут иметь<br />

аргументы, поэтому конструктор, будучи функцией-членом, тоже может иметь аргументы.<br />

При этом нельзя забывать, что вы вызываете конструктор не как нормальную<br />

функцию и передать ему аргу мент<br />

можно только в момент создания объекта. Так,<br />

приведенная ниже программа создает объект s класса student, вызывая конструктор<br />

Student (char* ). Объект s уничтожается в момент возврата из функции main ().<br />

#include <br />

#include <br />

class Student<br />

{<br />

public:<br />

Student(char "pName)<br />

{<br />

cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!