LINUX.ORG.RU

История изменений

Исправление Freyr69, (текущая версия) :

``в с++ нет инкапсуляции" (уверен, так можно сделать даже в жабе)

#include <iostream>

class Test
{
private:
  int x;
  int y;
public:
  Test(int x, int y) { this->x = x; this->y = y; }
  ~Test() {}
  int get_x() const { return this->x; }
  int get_y() const { return this->y; }
};


int
main(int argc, char *argv[])
{
  Test test (1,2);

  std::cout << test.get_x() << std::endl;

  *(reinterpret_cast<int*>(&test)) = 12;

  std::cout << test.get_x() << std::endl;
  
  return 0;
}

opaque structures — вполне себе инкапсуляция. Инкапсуляция, она скорее про отношение к данным, а не про механихм доступа к ним. Если абстрагируешься от полей — вполне себе инкапсуляция. Но это все, конечно, беспредметный спор о понятиях без конкретных определений.

Исходная версия Freyr69, :

``в с++ нет инкапсуляции" (уверен, так можно сделать даже в жабе)

#include <iostream>

class Test
{
private:
  int x;
  int y;
public:
  Test(int x, int y) { this->x = x; this->y = y; }
  ~Test() {}
  int get_x() const { return this->x; }
  int get_y() const { return this->y; }
};


int
main(int argc, char *argv[])
{
  Test test (1,2);

  std::cout << test.get_x() << std::endl;

  *(reinterpret_cast<int*>(&test)) = 12;

  std::cout << test.get_x() << std::endl;
  
  return 0;
}

opaque structures — вполне себе инкапсуляция.