idk
This commit is contained in:
parent
cf61ed4168
commit
4c37b6a85e
12
Makefile
12
Makefile
@ -40,17 +40,15 @@ sheet06:
|
|||||||
chmod +x build/sheet06
|
chmod +x build/sheet06
|
||||||
build/sheet06
|
build/sheet06
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
sheet08:
|
|
||||||
$(CC) src/sheet08.cpp -o build/sheet08
|
|
||||||
chmod +x build/sheet08
|
|
||||||
build/sheet08
|
|
||||||
=======
|
|
||||||
sheet07:
|
sheet07:
|
||||||
$(CC) src/sheet07.cpp -o build/sheet07
|
$(CC) src/sheet07.cpp -o build/sheet07
|
||||||
chmod +x build/sheet07
|
chmod +x build/sheet07
|
||||||
build/sheet07
|
build/sheet07
|
||||||
>>>>>>> e65a4df5f798869a10f26c50fc46a7b701763d43
|
|
||||||
|
sheet08:
|
||||||
|
$(CC) src/sheet08.cpp -o build/sheet08
|
||||||
|
chmod +x build/sheet08
|
||||||
|
build/sheet08
|
||||||
|
|
||||||
pizza:
|
pizza:
|
||||||
$(CC) src/pizza.cpp -o build/pizza
|
$(CC) src/pizza.cpp -o build/pizza
|
||||||
|
@ -4,20 +4,20 @@
|
|||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
class base
|
class base2
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~base() = default;
|
virtual ~base2() = default;
|
||||||
virtual void whoAmI() { std::cout << "I am base.\n"; }
|
virtual void whoAmI() { std::cout << "I am base.\n"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class derived_one : public base
|
class derived_one : public base2
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void whoAmI() override { std::cout << "I am derived_one.\n"; }
|
void whoAmI() override { std::cout << "I am derived_one.\n"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class derived_two : public base
|
class derived_two : public base2
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void whoAmI() override { std::cout << "I am derived_two.\n"; }
|
void whoAmI() override { std::cout << "I am derived_two.\n"; }
|
||||||
@ -51,7 +51,7 @@ class speaker : public greetings, public politeness
|
|||||||
class container
|
class container
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~container() = default;;
|
virtual ~container() = default;
|
||||||
virtual double& operator[](size_t idx) = 0;
|
virtual double& operator[](size_t idx) = 0;
|
||||||
virtual const double& operator[](size_t idx) const = 0;
|
virtual const double& operator[](size_t idx) const = 0;
|
||||||
virtual size_t size() const = 0;
|
virtual size_t size() const = 0;
|
||||||
@ -60,17 +60,17 @@ class container
|
|||||||
class vec : public container
|
class vec : public container
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
std::vector<double> vector;
|
std::vector<double> data;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
vec(size_t size) : vector(std::vector<double>(size)) {}
|
vec(size_t size) : data(std::vector<double>(size)) {}
|
||||||
double& operator[](size_t idx) override
|
double& operator[](size_t idx) override
|
||||||
{
|
{
|
||||||
if(idx>=size())
|
if(idx>=size())
|
||||||
{
|
{
|
||||||
throw std::domain_error("Index larger than vector");
|
throw std::domain_error("Index larger than vector");
|
||||||
}
|
}
|
||||||
return vector[idx];
|
return data[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
const double& operator[](size_t idx) const override
|
const double& operator[](size_t idx) const override
|
||||||
@ -79,10 +79,10 @@ class vec : public container
|
|||||||
{
|
{
|
||||||
throw std::domain_error("Index larger than vector");
|
throw std::domain_error("Index larger than vector");
|
||||||
}
|
}
|
||||||
return vector[idx];
|
return data[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t size() const override { return vector.size(); }
|
size_t size() const override { return data.size(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
class lst : public container
|
class lst : public container
|
||||||
@ -116,6 +116,49 @@ class lst : public container
|
|||||||
return *begin;
|
return *begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t size() const override { return data.size(); }
|
||||||
|
};
|
||||||
|
|
||||||
|
void fill_container(container& c)
|
||||||
|
{
|
||||||
|
for(size_t i = 0; i<c.size(); ++i)
|
||||||
|
{
|
||||||
|
c[i] = i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double sum_container(const container& c)
|
||||||
|
{
|
||||||
|
double sum = 0;
|
||||||
|
for(size_t i = 0; i<c.size(); ++i)
|
||||||
|
{
|
||||||
|
sum +=c[i];
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class T> class base
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
T base_value;
|
||||||
|
|
||||||
|
public:
|
||||||
|
base(T t) : base_value(t) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<class T> class derived : public base<T>
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
T derived_value;
|
||||||
|
using base<T>::base_value;
|
||||||
|
|
||||||
|
public:
|
||||||
|
derived(T t, T u) : base<T>(u), derived_value(t) {}
|
||||||
|
void printValues()
|
||||||
|
{
|
||||||
|
std::cout << base_value << '\n';
|
||||||
|
std::cout << derived_value << '\n';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
@ -124,7 +167,7 @@ int main()
|
|||||||
d1.whoAmI();
|
d1.whoAmI();
|
||||||
derived_two d2;
|
derived_two d2;
|
||||||
d2.whoAmI();
|
d2.whoAmI();
|
||||||
base b;
|
base2 b;
|
||||||
b.whoAmI();
|
b.whoAmI();
|
||||||
|
|
||||||
speaker s;
|
speaker s;
|
||||||
@ -133,4 +176,17 @@ int main()
|
|||||||
s.say_please();
|
s.say_please();
|
||||||
s.say_thanks();
|
s.say_thanks();
|
||||||
s.say_you_are_welcome();
|
s.say_you_are_welcome();
|
||||||
|
|
||||||
|
vec v = vec(10);
|
||||||
|
lst l = lst(10);
|
||||||
|
|
||||||
|
fill_container(v);
|
||||||
|
std::cout << "Sum: " << sum_container(v) << '\n';
|
||||||
|
|
||||||
|
fill_container(l);
|
||||||
|
std::cout << "Sum: " << sum_container(l) << '\n';
|
||||||
|
|
||||||
|
derived<int> d(20,10);
|
||||||
|
d.printValues();
|
||||||
|
return 0;
|
||||||
}
|
}
|
BIN
vgcore.13380
BIN
vgcore.13380
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user