2015-10-15 2 views
0

Я переехал в новый Uni. В моей старой программе мы сильно сосредоточились на Java, но в новом Uni мы уделяем большое внимание C++ и нет вводного класса. Я перехожу к учебникам C++, чтобы познакомиться, но я хотел бы закончить эту задачу.Полиморфизм и обратные вызовы, что здесь происходит?

В основном мы должны написать программу, которая вычислит числовую производную, которая не является проблемой, я просто не в полной мере понять данный код:

Мы должны использовать два понятия: полиморфизм и обратного

Код:

double myfunction(const double x){ 
... 
} 

class Der{ 
... 
}; 

int main(){ 
    double x, h; 

    Der::derivative(Der(),x,h) 
    Der::derivative(myfunction,x,h) 

    derivative(Der(),x,h) 
    derivative(myfunction,x,h) 

    return 0; 
} 

ИТАК первых двух вызовов я не понимаю, что Der() означает, что мы передаем здесь не похож на экземпляр объекта. Я знаком с передачей функций в качестве аргументов, но не полностью уверен, почему передается либо объект, либо функция, если метод derivative не вычисляет его из аргументов x, h.

Во вторых двух строках я не уверен, в чем смысл? Если мне нужна другая функция derivative, чем то, что предназначено для myFunction?

+0

Похоже, что они пытаются чему-то научиться в операторе разрешения области. Не видя определения класса Der, похоже, что у него может быть статическая функция с именем производная, которая имеет (по крайней мере) две перегрузки. Тот, который принимает объект Der (который построен с помощью Der()) и тот, который принимает указатель на функцию (myfunction). В предположении есть также производная функция с двумя прототипами в пределах области действия кода выше. –

ответ

0

Я не понимаю, что означает Der().

Der это название класса. Вы звоните derivative() класса Der. Вам нужно сделать это, потому что не существует экземпляра класса Der (подсказка: это означает, что derivative() является статической функцией (далее here) !!).

Если мне нужна другая производная функция, чем цель myFunction?

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


Я знаю, что Der() является класс не уверен, почему он передается в Der :: производная (..) и почему, как Der(), а не переменная, которая содержит экземпляр этого.

Ну, Der() является конструктором, вам нужно передать его как это, так как derivative() принимает функцию в качестве первого параметра. Какая цель? Неизвестно, что мы знаем сейчас.

+0

Я знаю, что Der() не уверен, почему он передается Der: производному (..) и почему в качестве Der(), а не переменной, которая содержит экземпляр этого. – Wilwiky

+0

Отредактируйте @Wilwiky. И удачи в новом uni! – gsamaras

Смежные вопросы