#include <memory>
std::unique_ptr<Audioformat> af(new Audioformat(""));
af->info(); af->title();
// Не нужен delete :D
class Audioformat {
public:
virtual string info() = 0;
};
class MP3_Format : public Audioformat {
public:
string info() override { return "MP3"; }
};
class Audioformat {
public:
virtual ~Audioformat() {}
};
function<double(double)>
-- это тип функции, которая принимает один параметр double и возвращает double.function<double(double)> f;
f = [](double x){ return x * 2; };
f(5); //=> 10
f = [](double x){ return x * x; };
f(5); //=> 25
eval(lambda_x3,2.0)
-- это то же самое, что и lambda_x3(2.0)
. box.switchMove(Move) // Что??
Move
это имя типа, его нельзя тут использовать. Вот box.switchMove(Move.Left)
и так далее написать можно. То есть вам нужно вычислить, в каком направлении подвинулся pers
и выбрать, какой параметр передать: Move.Left
, Move.Right
, Move.Up
или Move.Down
. const T&
T
T&
T*
/ const T*
. Константность зависит от того, надо ли параметр модифицироватьT&&
std::unique_ptr
std::unique_ptr
указывает на память, которой мы владеем. Предпочитать значению его следует, если это полиморфный типstd::array
, std::fstream
. Если мы хотим передавать владельца переменной такого типа или, например, вернуть из функции, то придётся использовать std::unique_ptr
.type
-- это имя типа вашего enum. var
-- название переменной только что объявленного типа. Код можно переписать так:enum type {
A,B,C
};
enum type var;
type
-- это ключевое слово, лучше классический enum fruit { apple, orange };
. Плюс определять переменные в объявлении типа -- advanced feature, я бы её в первом же примере не давал. signed int num = INT_MAX;
Тогда при ++num;
что окажется в num
-- unspecified. То есть может оказаться INT_MIN, а может 42.unsigned int num = UINT_MAX;
Тогда при ++num;
в num
обязано оказаться 0
, в соответствии со стандартом. переполнения беззнаковых целых быть не должно
#include <vector>
#include <random>
std::vector<double> result(100);
std::uniform_real_distribution<double> unif(-10.0, 10.0);
std::default_random_engine re;
for (int i = 0; i < 100; ++i) {
result[i] = unif(re);
}
std::sort(result.begin(), result.end());