Форум программистов, компьютерный форум CyberForum.ru

доступ к private членам - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выполнение действий с возможностью действия http://www.cyberforum.ru/cpp-beginners/thread945023.html
Извиняюсь за теоретический вопрос, но все же попробую обратиться к вашим экстрасенсорным способностям. Есть последовательность действий(функции выполняющие определенные действия) которую нужно выполнять, есть переменная-переключатель действий(int a), изменение которой должно приводить к переключению действий. Я с помощью таймера контролирую значение этой переменной(переключателья действия) и в...
C++ Как оптимизировать код? Как оптимизировать код, чтобы работала программа быстрее #include <iostream> #include <fstream> #include <iomanip> using namespace std; int fib(int); int main() { http://www.cyberforum.ru/cpp-beginners/thread945018.html
Не корректный вывод данных C++
#include <iostream> using namespace std; int main() { setlocale( LC_ALL, "Russian" );
C++ Когда нужно ставить 0.0f в передаче переменной
Давно пишу на DirectX и уже забыл для чего я использую 0.0f (имеется ввиду только буква f после числа с плавающей точкой) Вроде бы чтобы не происходило преобразование типов неявное. Ну вопросы на пальцах задам... D3DXVECTOR3 position(0.0f,0.0f,0.0f); Каждый из трех (x,y,z) это float надо ли использовать тут .0f чтобы компилятор не думал о преобразовании double в float?
C++ Не могу понять почему в файл OUTPUT.TXT ничего не записывается http://www.cyberforum.ru/cpp-beginners/thread944973.html
#include <iostream> #include <fstream> using namespace std; int main() { int n,i; ifstream in("INPUT.TXT"); in >> n;
C++ Очистить поток Хотел с помощью куска кода (см.ниже) очистить буфер связанный с потоком cin. Но выражение в скобках по какой-то причине не изменяется? while(cin.rdbuf()->in_avail() != 0) cin.get(); подробнее

Показать сообщение отдельно
qwe522y
0 / 0 / 0
Регистрация: 22.07.2012
Сообщений: 23
28.08.2013, 18:41     доступ к private членам
Здравстуйте. недавно нарвался на непонятное мне поведение в С++. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
class A {
private:
    int x;
public:
    void DO(A& a);
    A(int x);
};
 
A::A(int x) {
    this->x = x;
}
 
void A::DO(A& a) {
    std::cout<<a.x<<'\n';
}
 
int main() {
    A a1(1);
    A a2(2);
    a1.DO(a2);
    return 0;
}
все скомпилировалось и вывело цифру 2
Я всегда думал что private члены достыпны только из объекта которому они принадлежат. А тут мы види что один объект нагло юзает private член другого(функция DO). Та же картина в java. Почему так? Неужели если объекты одного типа то они могут юзать private члены друг друга. Или я где-то ошибся?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru