Technology sharing

Christianus: Discrimen compositionis et hereditatis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Introductio ad compositionem et comparationem cum hereditate

quid est compositum?
(1) Compositio significat utens obiectis plurium aliarum generum sicut membra in genere.
(2) Utere genus ligni ad causas explicare
(3) Compositum est etiam methodus reuse et essentia eiusStructureInclude

#include <iostream>
#include <vector>
#include <string>

// Leaf 类
class Leaf {
public:
    Leaf(const std::string& color) : color_(color) {
        std::cout << "Leaf constructor called: " << color_ << std::endl;
    }

    ~Leaf() {
        std::cout << "Leaf destructor called: " << color_ << std::endl;
    }

    void display() const {
        std::cout << "Leaf color: " << color_ << std::endl;
    }

private:
    std::string color_;
};

// Branch 类
class Branch {
public:
    Branch(int length) : length_(length) {
        std::cout << "Branch constructor called: " << length_ << " cm" << std::endl;
    }

    ~Branch() {
        std::cout << "Branch destructor called: " << length_ << " cm" << std::endl;
    }

    void display() const {
        std::cout << "Branch length: " << length_ << " cm" << std::endl;
    }

private:
    int length_;
};

// Tree 类,包含 Leaf 和 Branch 对象
class Tree {
public:
    Tree(const std::string& leafColor, int branchLength) 
        : leaf_(leafColor), branch_(branchLength) {
        std::cout << "Tree constructor called" << std::endl;
    }

    ~Tree() {
        std::cout << "Tree destructor called" << std::endl;
    }

    void display() const {
        leaf_.display();
        branch_.display();
    }

private:
    Leaf leaf_;
    Branch branch_;
};

int main() {
    Tree tree("Green", 150);
    tree.display();
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70

Insert imaginem descriptionis hic

Comparatio notarum hereditatis et compositionis
(1) Hereditas est quaedam (is a) Relatio transitiva et non symmetrica.
(2) Compositum est relatio partis.
(3) Haereditas est capsellae albae reuse. Quia hereditas genus nobis permittit exsequendam singula parentis genere secundum nostram exsecutionem delendam, exsequendum genus parentis ad puerum genus visibilis est.
(4) Arca alba reuse hereditatis notam encapsulationis generis quodammodo destruit, quia exsecutionem singula generis parentis ad genus exponet.
(5) Compositum pertinet ad reuse capsulae nigrae.Interna contenti objecti extra mundum non apparent, ideo encapsulation eius est bonum respective, et mutua in exsequendis est relative parva.
(6.) Inclusum genus in compositione creatur et destruetur, sicut in quo genere creatur. Compositae sunt nigrae capsulae reuse et in runtime dynamice definiri possunt, obtinendo aliud obiectum indicis vel indicibus eiusdem generis. Incommodum est quod multae res in ratione sunt.
(7) OO consilio principium est primum coniungere, deinde possidere.

De hereditate multa et eius ambiguitate quaestiones

multa hereditas
(1) Multiplex hereditas significat genus genus habet plures parentis classes
(II) multiplex hereditas demonstrationis
(3) Nulla manifesta differentia est inter principia multiplex hereditatis et unius hereditatis.
(4) Hereditas multiplex ad difficultates ambiguas ducere potest
Ambiguitas multiplex hereditatis 1
(1) Sem: C multiplicem hereditatem ex A et B habet, ergo erit ambiguitas cum membra vocabulis vocabulis A, B in C;
(2) Ratio: C Idem nomen membrum (diversi nominis spatium) ab A et B sortitur, ut, cum obiecto C vocando, compilator quem appellare volumus definire non possit.
(3) Solutio I: Ad evitandum eventum, nominatio membrorum publicorum A et B saepe non pugnet. Sed hoc interdum est impotens.
( 4 ) Solutio 2 : Evidenter specificare quem quis cum coding vocet , uti cA : : func ( ) clare definias quod func classis A nominetur loco func classis B.
(5) Solutio III: Redefine func in C, tunc func in C vocabuntur, & func in A, B latent.
(6) Summarium: Solvi potest, sed non est bona solutio.

Ambiguitas hereditatis multiplex 2
(1) varius varius: quaestionem haereditatis adamas.Hoc est, A antecessoris genus, B1:A, B2:A, C:B1,B2.
(2) Analysis: c.func() ambiguum est, cA::func() ambiguum est, sed c.B1::func() et c.B2::func() non ambiguum est.
(3) Solutio: Eadem quae in primo problemate, sed quaestio 2 est subtilior et difficilior ad vitandum

Insert imaginem descriptionis hic

// 祖类
class Aa {
 public:
  void show() { std::cout << "A's method" << std::endl; }
};

// 派生类 B1 和 B2,从 A 继承
class B1 : public Aa {
 public:
  void show() { std::cout << "B1's show" << std::endl; }
  void showB1() { std::cout << "B1's method" << std::endl; }
};

class B2 : public Aa {
 public:
  void show() { std::cout << "B2's show" << std::endl; }
  void showB2() { std::cout << "B2's method" << std::endl; }
};

// 派生类 C,从 B1 和 B2 继承
class C : public B1, public B2 {
 public:
  void showC() { std::cout << "C's method" << std::endl; }
};

int test070103() {
  C c;
  // c.Aa::show();    // 调用 A 的方法 不可以
  c.Aa::B1::show();  // 调用 A 的方法 不可以
  c.B2::Aa::show();  // 调用 A 的方法 不可以
  c.B1::show();      // 调用 B1 的方法
  c.B2::show();      // 调用 B2 的方法
  c.showB1();        // 调用 B1 的方法
  c.showB2();        // 调用 B2 的方法
  c.showC();         // 调用 C 的方法
  return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

Hereditas virtualis ambiguum solvit problema haereditatis adamantinae

Quomodo uti haereditate virtual!
(1) Scenario: Hereditas Adamas ducit ad ambiguum problemata. Essentialiter sunt duo A objecta, quae in B1 et B2 continentur in nepote genere C, ergo est ambiguitas.
(2) Hereditas virtualis solutio: B1 et B2 A virtualiter haeres, et tunc C regulariter B1 et B2 hereditabit.
(3) Hereditas virtualis illa simplex est.

Principium exsecutionis hereditatis virtualis
(1) Principium haereditatis virtualis est: mensa ordinis virtualis regula vbptr et basis virtualis mensa ordinis virtualis
(2) Relatio:https://blog.csdn.net/xiejingfa/article/details/48028491

Insert imaginem descriptionis hic

Summatim

Intellegere quid sit coniunctio.
Intellige differentiam compositionis et hereditatis
Ambiguitas: Si munus fungeris, non necesse est esse quem vis definire.
Solutio: Usus cA:: func() explicite specificare genus quod vocatur
Hereditas virtualis aliquantulum est veluti compilatio conditionalis. Solum semel introducendum est.

Studium tabulae et notorum praeiudicio delebuntur.
Source: Magister Zhu's Internet Rerum Classroom