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

Конструктор копирования, типы данных. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Простые числа и матрица. http://www.cyberforum.ru/cpp-beginners/thread228885.html
В понедельник экзамен, надо 2 проги написать: 1.Вывести простые числа первой сотни, группируя их в строчку следующим образом: первая строка – простые числа первого десятка, вторая строка – простые числа второго десятка и т.д. 2.В текстовом файле хранится матрица размерностью 5 x 6. Задать номера 2 строк и рассчитать скалярное произведение, рассматривая строки как вектора. Буду благодарен!
C++ Перевод из Паскаля в с++ Задача: Найти все натуральные n-значные числа, цифры в которых образуют строго возрастающую последовательность Есть решение на Паскале: var c1,c2,i,c3:longint; n,f:integer; begin readln(n); c1:=1; http://www.cyberforum.ru/cpp-beginners/thread228881.html
C++ что за тип unsigned?
srand((unsigned)time(NULL)); приведенеие типов. а что за тип такой? целый?:scratch:
операторы ветвления C++
Вводиться двузначное число. Определить, равен ли квадрат этого числа учетверенной сумме кубов его цифр. Например, для числа 48 ответ положительный, для числа 52 — отрицательный. нужно сделать простую программу через printf и scanf с одной ток библиотекой #include<stdio.h> без каких либо замудренностей...заранее спасибо
C++ Найти количество элементов, кратных заданному числу, расположенных выше главной диагонали матрицы http://www.cyberforum.ru/cpp-beginners/thread228831.html
написать программу, определяющую количество элементов, кратных задаваемому пользователем числу расположенных выше главной диагонали квадратной матрицы случайных чисел (на си):wall::wall:
C++ Нужна консультация Какие знания должны быть, что бы написать программку (на С++) взаимодействующюю с другими сторонними? То есть например АртМани, или бота для онлайн игры или что-нибуть в этом направлении. Добавлено через 18 часов 15 минут большое спасибо за активность) подробнее

Показать сообщение отдельно
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31

Конструктор копирования, типы данных. - C++

14.01.2011, 18:45. Просмотров 1567. Ответов 8
Метки (Все метки)

1) Как я понял из прочтения есть конструктор по-умолчанию, который создается по-умолчанию компилятором, но можно и самому явно указать конструктор не принимающий параметров это и будет конструктор по-умолчанию, но в нем теперь можно проинициализировать элементы класса. Если указать ещё один конструктор, но который принимает параметры, то это будет уже не конструктор по-умолчанию и вступать в работу он будет, когда создается объект и передаются параметры. Существует также конструктор копирования. В его объявление должен присутствовать указатель на объект такого же класса откуда конструктор. Получив указатель конструктор поэлементно копирует значения элементов одного объекта в элементы другого объекта. Данный конструктор используется, когда создается объект и сразу же производится его инициализация, то есть что-то вроде этого:
C++
1
2
3
4
5
6
class time
{
.....
};
time object1;
time object2 = object1; // вот здесь вступит в работу конструктор копирования, да?
Есть другой способ копирования значений одного объекта в значения другого объекта - это перегрузка оператора присвоение. Она вступает в работу, когда используется простое присвоение одного объекта другому, но при этом оба объекта уже созданы, да?


2) не могу понять, что такое объявление и определение? расскажите, пожалуйста, своими словами.

3) Хотел бы спросить ещё про типы данных. На сколько я понял указание типа данных во-первых нужно для того, чтобы знать сколько памяти выделить под данные, во-вторых для того, чтобы знать в какой форме эти данные представить(записать) в ячейку памяти. В-третьих типы данных указывают какие операции можно произвести над операндами, а какие нет(это защита от глупости, например от возведения указателя в квадрат - это не логично). Если операнды имеют разные типы данных и над ними пытаются произвести какую-нибудь операцию, то операнды попробую привести к одному типу(например, если складывают int и long, то в памяти на которую указывает переменна типа int будет прибавлено пару байт, то есть имя переменной будет уже указывать на большее число байт памяти). Если же компилятору операция покажется нелогичной например сложение символьного типа и int, то компилятор выдаст ошибку. Объявление типа данных с этой точки зрения даёт возможность компилятору отслеживать какие операции логичны, а какие нет. Но, даже, если операция не логична, то можно послать компилятор и сказать ему, что да я понимаю, что операция нелогичная, но я осознаю, что делаю - это действие называется явным приведение типов.

Просьба прокомментируйте все моменты, желательно до последней мелочи, хочу понимать всё, как есть. И укажите, где и что не правильно сказано, а где и вовсе глупости. Заранее благодарю!
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru