The University of Iowa
The College of Liberal Arts and Sciences
Department of Computer Science
Programming Languages and Tools:
CS:3210:0001
Lecture/Lab #14
Programming with C++
Destructors, std::vector
Warm up
struct moveable {
virtual void move_by( point const& offset ) {}
};
struct streamable {
virtual void write( std::ostream& ) const {}
};
struct alive {
virtual bool has_energy() const { return true; }
virtual int max_energy() const { return 0; }
};
struct shape : moveable, streamable {};
struct organism : moveable, streamable, alive {};
void move_around( moveable& );
void move_and_record( shape& );
int main() {
organism o;
move_around( o );
move_and_record( o );
}
Exercise 1
Fix the compilation issues and use your best judgement to make the program pass the tests
-
Open the exercise template
-
Write your code, press Run to test
-
When you're done, grab your Repl's link and send it as a direct message to me (agurtovoy)
-
Click on the corresponding option in the "Lab14 exercises" poll in #general
Destructors
struct car
{
car() { std::cout << "car constructed" << std::endl; }
~car() { std::cout << "car destructed" << std::endl; }
};
int main() {
car c;
}
-
A special member function that is called right before the object is destroyed (e.g. when the object goes out of scope)
-
The primary purpose is to free the resources that the object may have acquired during its lifetime
std::vector
#include <vector>
int main() {
std::vector<point> v = {
point{ 0, 0 },
point{ 10, 17 },
point{ 5, -7 }
};
std::cout << v.size() << std::endl;
}
-
A linear collection of objects, all of which have the same type
-
Often referred to as a container because it “contains” other objects.
-
Similar to list in Python / ArrayList in Java
-
Every object in vector has an associated index, which gives access to that object.
Exercise 2
Write a program that asks user for a number N, then asks user to enter N integers, then prints the space-separated sequence of integers to the console
-
Open the exercise template
-
Write your code, press Run to test
-
When you're done, grab your Repl's link and send it as a direct message to me (agurtovoy)
-
Click on the corresponding option in the "Lab14 exercises" poll in #general
Programming with C++, Fall 2019, Lecture #14
By Aleksey Gurtovoy
Programming with C++, Fall 2019, Lecture #14
Destructors, std::vector
- 595