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

Насчет оператора присваивания - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Рекурсивная функция http://www.cyberforum.ru/cpp-beginners/thread766299.html
Здраствуйте, пытаюсь написать лабу для нахождения пути в лабиринте, выбрал волновой алгоритм Ли. Для начала хочу просто заполнить матрицу фронтов волн рекурсивно void Front(int **arr, const int m, const int sx, const int sy) { if(sx==9) return; if(sy==10) return; // if(sx==0) return; // if(sy==-1) return;
C++ Ошибка undefined reference to `PlaySoundA@12' ld returned 1 exit status простите за название темы, но форум не дает мне назвать ее "проблемы с PlaySound".. постоянно ошибку дает что запрещено использовать русские и английские буквы в слове. #include <Windows.h> #include <mmsystem.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static char... http://www.cyberforum.ru/cpp-beginners/thread766286.html
C++ Проверить, является ли слово перевертышем
Дано слово. Проверить, является ли оно перевертышем (перевертышем називается слово, читаемое одинаково как с начала, так и с конца)
Игрушка Танчики C++
у меня есть 1 свой танк, 2 вражеских. и сейчас если один вражеский попадет в другого вражеского, то подстреленный исчезает и выходит конец игры. как обработать событие чтобы вражеские не могли друг друга убивать? void Field::moveShots() { for (int i = 0; i < bullets.size(); i++) { Bullet *pb; pb = dynamic_cast <Bullet*> (bullets); QRegion region =...
C++ Составить блок-схему алгоритма для подсчета количества работников http://www.cyberforum.ru/cpp-beginners/thread766211.html
Составить блок-схему алгоритма для подсчета количества работников, которые имеют с 1 по 5 разряд, если известны разряды каждого работника предприятия.
C++ Компиляция серьезной графики под Mingw Возьмем для примера gdi+ (c всем остальным у меня получалось абсолютно тоже. только winapi из windows.h пока могу) пишу элементарный пример, когда довожу его до компиляции, на стадии линковки компилятор чего-то не видит. простой код не привожу, так как пока не спрашиваю "как написать на gdi+ что-то работающее" а спрашиваю "как в mingw вообще хоть что-то с gdi+ откомпилировать"? подробнее

Показать сообщение отдельно
mzarb
-211 / 7 / 1
Регистрация: 14.01.2013
Сообщений: 141
19.01.2013, 16:01     Насчет оператора присваивания
Есть следующий код :
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
#include <iostream> 
using namespace std;
 
class Array {
private:
    size_t mysize;
    int *mydata;
public:
    Array(size_t size);
    void operator=(Array a);
    void set(int i, int val);
    int get(int i);
};
 
Array::Array(size_t size){
    mysize = size;
    mydata = new int [mysize];
}
 
void Array::operator=(Array a){
    mysize = a.mysize;
    delete [] mydata;
    mydata = new int [mysize];
    for(int i=0;i<mysize;i++)
        mydata[i] = a.mydata[i];
}
 
void Array::set(int i, int val){
    mydata[i] = val;
}
 
int Array::get(int i){
    return mydata[i];
}
 
int main() {
    setlocale(LC_CTYPE, "Russian");
    
    Array a(10);
    a.set(0,115);
    Array b(20);
    b=a;
    cout << a.get(0);
    system("pause");
        return 0;
}
То есть при выполнении этой операции b=a; или b.operator=(a) будет вызван метод класса operator=(), в объявлении которого указан параметр принимающий по значению, то есть будет копироваться объект с помощью конструктора копий. Это верно? Ну а если "b = a" - это синтаксический сахар от b.operator=(a), то касается ли это такого кода :
C++
1
2
3
int x = 10;
 int y = 20;
 y = x;
Ведь работать будет и такой :
C++
1
2
3
int x(10);
int y(20);
y = x;
Или такой :
C++
1
2
int x(10);
int y(x);
Я так понимаю, что во всех трех случаях запускается конструктор копий, тогда получается что int - это не просто что-то, а класс int, то есть int(класс) x(объект). Если все так, то конечно странно, что в начале книги я не видел этого, а думал что int - это что-то другое, но точно не класс. С одной стороны логично не рассматривать этот момент до того как будут затронуты классы, но хотя бы пометку из пары слов следовало бы оставить и сказать, что это класс, но разъяснения будут после ознакомления с объектно-ориентированным программированием.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru