Вызов конструктора в методе

Классы используются в основном для того, чтобы скрыть от пользователя доступ к членам класса - именно поэтому по умолчанию все члены клас­са являются закрытыми. В качестве иллюстрации рассмотрим простой пример. Рассмотрим процесс вычисления экспоненты. Для записи экспоненты и ее аргумента используем поля класса. Проблема состоит в том, что при таком подходе поля должны меняться синхронно - если меняется поле-аргумент, должно соответствующим образом измениться и поле для значения экспоненты, причем второе поле изменяется только вследствие изменения первого ноля. Проблема решается, если сделать поля закрыты­ми, а доступ к ним реализовать так, чтобы выполнялись необходимые усло­вия.
#include 
using namespace std;
//Класс с закрытыми полями:
class MyExp{
double x;
double xexp;
//Закрытый метод для вычисления экспоненты:
double mexp(double z){
double s=1,q=z;
for(int i=1; i <= 100; i++){
 s+=q;
 q*=z/(i+1);}
return s;}
public:
//Открытый метод для изменения значения полей:
void set(double z){
x=z;
xexp=mexp(x);}
//Конструктор с вызовом открытого метода:
MyExp(double z){
set(z);}
//Перегруженный метод для отображения полей:
double get(){
return x;}
double get(int k){
return xexp;}
};
int main(){
double x=1;
MyExp obj(x);
cout << "x = " << obj.get() << endl;
cout << "exp(x) = " << obj.get(0) << endl;
return 0;}
Онлайн всего: 1
Гостей: 1
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте