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

Стандартный конструктор копировщик и оператор = не справляются со своей задачей - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Unresolved externals http://www.cyberforum.ru/cpp-beginners/thread1497192.html
Здравствуйте. Объявил такую функцию : std::string SplitFileName ( std::string& data) { std::string fileName; int i = data.length() - 1; while (data != '\\' ); while (data != '\0' ) fileName += data;
C++ Построить график функции #include <clocale> #include <ctime> #include <cstdlib> #include <cmath> #include <iostream> #include <vector> #include <iterator> using namespace std; template<typename Type> http://www.cyberforum.ru/cpp-beginners/thread1497187.html
C++ Перезапись символьных данных в массиве классов
Есть массив классов и в него нужно записывать название книги, имя автора и цену книги. У каждого автора свой номер от 0-5(мой массив классов). Все пишется нормально, только при просмотре для соответствующего автора правильно показывает только цену, а имя автора и название книги у всех перезаписывается как у последнего. Подскажите кто шарит или сталкивался. Books.h #pragma once namespace...
Идеи проектов C++
Доброго врмени суток форумчане! Столкнулся с такой трудностью как отсутствие практики, вроде бы начальная база знаний есть(ясное дело циклы, массивы, ф-ции, стрктуры, немного классы), но вот по проэктикам душа плачет :D В книге те проэкты которые писал, то зачастую это маленькие и сухие, для того что бы уметь и понимать. Поэтому возможно у вас будут идеи интересных проэктов, пусть и не...
C++ Синтаксические ошибки при компиляции программы http://www.cyberforum.ru/cpp-beginners/thread1497167.html
Доброго времени суток ребят, у меня к вам просьба, посмотреть в чем проблема. #include<iostream> using namespace std; int main() { const double pi = 3.1415; const int Radius = "3"; double Square = 0; Square = pi * Radius * Radius; cout << Square << '\n';
C++ Определить, как должен быть расположен жилой комплекс по отношению к комбинату При выборе места строительства жилого комплекса при металлургическом комбинате необходимо учитывать “розу ветров” (следует расположить жилой комплекс так, чтобы частота ветра со стороны металлургического комбината была бы минимальной). Для этого в течение года проводилась регистрация направления ветра в районе строительства. Данные представлены в виде массива, в котором направление ветра за... подробнее

Показать сообщение отдельно
RAFA91
Заблокирован
11.07.2015, 15:57     Стандартный конструктор копировщик и оператор = не справляются со своей задачей
Всем привет !

Выяснил , что стандартный конструктор копировщик и оператор = не справляются со своей задачей в случае,

если значение переменной класса находится в области динамического обмена.

После выполнения
C++
1
A = B;
значение указателей x обьекта А и В совпадают.

После выполнения
C++
1
Vita D(987), C(D);
значение указателей x обьекта C и D совпадают.

Не понял также почему в функции void hgh(int a) я могу изменять значения переменной.

я же возле нее поставил слово const.

Для меня это загадка.

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
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
#include <stdio.h>
#include <conio.h>
 
class Vita
 
{
 
private:
 
    int *x;
 
public:
 
    Vita() : x(new int(0)) {printf("\nKONSTRUKTOR 1 %p x = %p\n",this,x);}
 
    Vita(int a) : x(new int(a)) {printf("\nKONSTRUKTOR 2 %p x = %p\n",this,x);}
 
    ~Vita() 
    
    {
        printf("\nDESTRUKTOR %p x = %p\n",this,x);
 
        delete x;
    }
 
    int fvf() const {printf("\nfvf() %p x = %p\n",this,x); return *x;}
 
    void hgh(int a) const {printf("\nfvf() %p x = %p\n",this,x); *x = a;}
};
 
 
int main()
 
{
    Vita A(600);
 
    printf("\nA = %p\n",&A);
 
    printf("\nA = %d\n",A.fvf());
 
    Vita B(700);
 
    printf("\nB = %p\n",&B);
 
    printf("\nB = %d\n",B.fvf());
 
    A = B;
 
    printf("\nA = %d\n",A.fvf());
 
    A.hgh(123);
 
    printf("\nA = %d\n",A.fvf());
 
    printf("\nB = %d\n",B.fvf());
 
    printf("\n*****************************\n");
 
    Vita D(987), C(D);
 
    printf("\nC = %p D = %p\n",&C,&D);
 
    printf("\nC = %d D = %d\n",C.fvf(),D.fvf());
 
    getch();
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru