idk
This commit is contained in:
parent
cf61ed4168
commit
4c37b6a85e
12
Makefile
12
Makefile
@ -40,17 +40,15 @@ sheet06:
|
||||
chmod +x build/sheet06
|
||||
build/sheet06
|
||||
|
||||
<<<<<<< HEAD
|
||||
sheet08:
|
||||
$(CC) src/sheet08.cpp -o build/sheet08
|
||||
chmod +x build/sheet08
|
||||
build/sheet08
|
||||
=======
|
||||
sheet07:
|
||||
$(CC) src/sheet07.cpp -o build/sheet07
|
||||
chmod +x build/sheet07
|
||||
build/sheet07
|
||||
>>>>>>> e65a4df5f798869a10f26c50fc46a7b701763d43
|
||||
|
||||
sheet08:
|
||||
$(CC) src/sheet08.cpp -o build/sheet08
|
||||
chmod +x build/sheet08
|
||||
build/sheet08
|
||||
|
||||
pizza:
|
||||
$(CC) src/pizza.cpp -o build/pizza
|
||||
|
@ -4,20 +4,20 @@
|
||||
#include <iterator>
|
||||
#include <stdexcept>
|
||||
|
||||
class base
|
||||
class base2
|
||||
{
|
||||
public:
|
||||
virtual ~base() = default;
|
||||
virtual ~base2() = default;
|
||||
virtual void whoAmI() { std::cout << "I am base.\n"; }
|
||||
};
|
||||
|
||||
class derived_one : public base
|
||||
class derived_one : public base2
|
||||
{
|
||||
public:
|
||||
void whoAmI() override { std::cout << "I am derived_one.\n"; }
|
||||
};
|
||||
|
||||
class derived_two : public base
|
||||
class derived_two : public base2
|
||||
{
|
||||
public:
|
||||
void whoAmI() override { std::cout << "I am derived_two.\n"; }
|
||||
@ -51,7 +51,7 @@ class speaker : public greetings, public politeness
|
||||
class container
|
||||
{
|
||||
public:
|
||||
virtual ~container() = default;;
|
||||
virtual ~container() = default;
|
||||
virtual double& operator[](size_t idx) = 0;
|
||||
virtual const double& operator[](size_t idx) const = 0;
|
||||
virtual size_t size() const = 0;
|
||||
@ -60,17 +60,17 @@ class container
|
||||
class vec : public container
|
||||
{
|
||||
private:
|
||||
std::vector<double> vector;
|
||||
std::vector<double> data;
|
||||
|
||||
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
|
||||
{
|
||||
if(idx>=size())
|
||||
{
|
||||
throw std::domain_error("Index larger than vector");
|
||||
}
|
||||
return vector[idx];
|
||||
return data[idx];
|
||||
}
|
||||
|
||||
const double& operator[](size_t idx) const override
|
||||
@ -79,10 +79,10 @@ class vec : public container
|
||||
{
|
||||
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
|
||||
@ -116,6 +116,49 @@ class lst : public container
|
||||
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()
|
||||
@ -124,7 +167,7 @@ int main()
|
||||
d1.whoAmI();
|
||||
derived_two d2;
|
||||
d2.whoAmI();
|
||||
base b;
|
||||
base2 b;
|
||||
b.whoAmI();
|
||||
|
||||
speaker s;
|
||||
@ -133,4 +176,17 @@ int main()
|
||||
s.say_please();
|
||||
s.say_thanks();
|
||||
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