Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Titulnyy_list_otcheta_C++.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
306.18 Кб
Скачать

2.Агрегация по значению

A

public

private

protected

R has-a

R has-a

C

public

B

public

private

private

protected

protected

R has-a

R has-a

R has-a

// lab1_znach.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"

#include "conio.h"

#include <iostream>

using namespace std;

class A{

public:

class B{

public:

class D{

public:

D() {d = 0;}

int d;

void md() {

d += 1;

cout << "d = " << d << endl;

}

};

B() {}

D* mbd() {return &d;}

private:

D d;

};

class C{

public:

class F{

public:

F() {f = 0;}

int f;

void mf() {

f += 1;

cout << "f = " << f << endl;

}

};

class E{

public:

E() {e = 0;}

int e;

void me() {

e += 1;

cout << "e = " << e << endl;

}

};

C() {}

F* mcf() {return &f;}

E* mce() {return &e;}

private:

F f;

E e;

};

A() {}

B* mab() {return &b;}

C* mac() {return &c;}

private:

B b;

C c;

};

int main() {

A a;

a.mac()->mcf()->mf();

a.mac()->mce()->me();

a.mab()->mbd()->md();

_getche();

return 0;

}

2.Агрегация вложением

A

public

private

protected

B

public

private

protected

C

public

private

protected

// lab1_vlog.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"

#include "conio.h"

#include <iostream>

using namespace std;

class A {

public:

class B {

public:

class D {

public:

D() {d = 0;}

int d;

Void md() {

d += 1;

cout << "d = " << d << endl;

}

};

B() {}

D* mbd() {return &d;}

private:

D d;

};

class C {

public:

class F {

public:

F() {f = 0;}

int f;

Void mf() {

f += 1;

cout << "f = " << f << endl;

}

};

class E {

public:

E() {e = 0;}

int e;

Void me() {

e += 1;

cout << "e = " << e << endl;

}

};

C() {}

F* mcf() {return &f;}

E* mce() {return &e;}

private:

F f;

E e;

};

A() {}

B* mab() {return &b;}

C* mac() {return &c;}

private:

B b;

C c;

};

int main(int argc, char* argv[])

{

setlocale (LC_ALL,"Russian");

cout << "агрегация вложением\n";

A a;

a.mac()->mcf()->mf();

a.mac()->mce()->me();

a.mab()->mbd()->md();

_getche();

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]