|
||||
|
6.3.1 Конструкторы Альтернативу использованию нескольких функций (перегрженных) составляет описание конструктора, который по заданнму double создает complex. Например: class complex (* // ... complex(double r) (* re=r; im=0; *) *); Конструктор, требующий только один параметр, необязтельно вызывать явно: complex z1 = complex(23); complex z2 = 23; И z1, и z2 будут инициализированы вызовом complex(23). Конструктор – это предписание, как создавать значение данного типа. Когда требуется значение типа, и когда такое значение может быть создано конструктором, тогда, если такое значение дается для присваивания, вызывается конструктор. Например, класс complex можно было бы описать так: class complex (* double re, im; public: complex(double r, double i = 0) (* re=r; im=i; *) friend complex operator+(complex, complex); friend complex operator*(complex, complex); *); и действия, в которые будут входить переменные complex и целые константы, стали бы допустимы. Целая константа будет интерпретироваться как complex с нулевой мнимой частью. Наример, a=b*2 означает: a=operator*( b, complex( double(2), double(0) ) ) Определенное пользователем преобразование типа применется неявно только тогда, когда оно является единственным. Объект, сконструированный с помощью явного или неявного вызова конструктора, является автоматическим и будет уничтжен при первой возможности, обычно сразу же после оператора, в котором он был создан. |
|
||