MyTetra Share
Делитесь знаниями!
Структуры, классы, константные методы, конструктор
Время создания: 03.08.2017 13:51
Раздел: Computer - Programming - C++

#include <iostream>

#include <string>

#include <vector>


using namespace std;


struct Lecture

{

string title = "Cooking"; //через = значения по-умолчанию

unsigned int duration = "3520"; //аналог конструкторов в классах

string author = "Myself";

};


//Вложенные структуры

struct Course

{

string course_name;

string category;

vector<Lecture> lectures;

};


void PrintLecture(const Lecture& l)

{

cout << "Title: " << l.title << "\n";

cout << "Author: " << l.author << "\n";

cout << "Duration: " << l.duration << "\n\n";

}


void PrintCourse(const Course& c)

{

cout << "Welcome to " << c.category << " course '" << c.course_name << "'\n";

for(const Lecture& l : c.lectures)

{

PrintLecture(l);

}

}


int main()

{

Lecture lect1{"CPP11", 20, "Homemade"};

Lecture lect2{"Python", 17, "SnakeStudio"};

Course course1{"OOP", "Programming", {lect1, lect2}};

PrintCourse(course1);


//отдельное обращение

cout << "\nAuthor of second lecture: " << course1.lectures[1].author << "\n";


system("pause");

return 0;

}




Пример создания класса с константными методами и конструкторами


#include <iostream>

#include <string>


using namespace std;


class Route

{

public:

Route() //конструктор по-умолчанию

{

source = "Cherepovets";

destination = "Stutgart";

UpdateLength();

}

Route(const string& s, const string& d)

{

source = s;

destination = d;

UpdateLength();

}

void SetSource(const string& s)

{

source = s;

UpdateLength();

}

void SetDestination(const string& d)

{

destination = d;

UpdateLength();

}

string GetSource() const

{

return source;

}

string GetDestination() const

{

return destination;

}

unsigned int GetLength() const

{

return length;

}

void PrintRoute()

{

cout << GetSource() << " - " << GetDestination() << " (" << length << ")\n";

}

private:

unsigned int length;

string source;

string destination;

void UpdateLength()

{

length = source.length() - destination.length();

}

};


void PrintExtRoute(const Route& ro)

{

cout << ro.GetSource() << " - " << ro.GetDestination() << " [" << ro.GetLength() << "]\n";

}


int main()

{

Route main_route;

Route sec_route("Stutgart", "LA");

main_route.PrintRoute();

sec_route.PrintRoute();

cout << "\n";

//вызов функции, которая принимает объект класса Route

PrintExtRoute(sec_route);

//а можно и так, передав в функцию конструктор по-умолчанию.

PrintExtRoute({});

PrintExtRoute({"LA", "New York"});

getchar();

return 0;

}

 
MyTetra Share v.0.53
Яндекс индекс цитирования