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

Класс со значением полей "по умолчанию" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Спрашиваю совет по стилю написания кода http://www.cyberforum.ru/cpp-beginners/thread1004181.html
#include <vector> #include <string> class Errors { private: size_t i; //Глобальный счетчик циклов. std::string exp; //Входящая строка.
C++ Количество треугольников и сумма их периметров При заданных А1,...Аn, В1,...Bn, C1,...Cn, для каждой из n троек вида (Ai, Bi, Ci) проверить может ли быть построен треугольник со сторонами Ai, Bi, Ci при этом посчитать число треугольников и сумму их периметров. c++ http://www.cyberforum.ru/cpp-beginners/thread1004175.html
Вывод количества вершин(узлов) на заданном уровне C++
Напишите пожалуйста прогу которая будет выводить количество вершин(узлов) на уровне который вводим с клавиатуры
C++ Как сделать нумерацию массива
есть код программы: #include <iostream> #include <conio.h> using namespace std; void pch (int i) // Ввод функци pch { cout <<"Vvedite masiv"<<i;// вывести на экран "Введите массив" нумерация под i }
C++ Декартово произведение http://www.cyberforum.ru/cpp-beginners/thread1004163.html
Помогите пожалуйста написать программу для вывода декартового произведения двух и более множеств. Немного написал кода, непосредственно само заполнение множеств, а вот как вывести в виде декартового произведения не знаю. Необязательно дописывать этот код, можно и свои варианты. #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv) {
C++ Бинарные файлы В файле содержатся числа. Сформировать из них матрицу, содержащую пять элементов в строке. Лишние числа отбросить. Вывести на печать матрицу в общепринятом виде и посчитать сумму элементов, содержащихся в предпоследней строке. Числа могут вводиться либо пользователем, либо счетчиком случайных чисел. Количество чисел в файле задавать случайным образом, и оно должно быть неизвестно в основной... подробнее

Показать сообщение отдельно
Extrim88
 Аватар для Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
11.11.2013, 14:53     Класс со значением полей "по умолчанию"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Конструктор копирования по-умолчанию
TStudent::TStudent (const TStudent& Student)
{
    //В конструкторе копирования, так же выделим память на которые указывают указатели
    LastName = new char[strlen(Student.LastName) + 1]; 
    FirstName = new char[strlen(Student.FirstName) + 1];
    Patronimyc = new char[strlen(Student.Patronimyc) + 1];
     Group = new char[strlen(Student.Group) + 1];
   
    //И скопируем в них значения из объекта класса на базе которого мы создаем объект путем копирования
   strcpy(LastName, Student.LastName);
   strcpy(FirstName, Student.FirstName);
   strcpy(Patronimyc, Student.Patronimyc);
   strcpy(Group, Student.Group);
   Born = Student.Born;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Перегрузка оператора присвоения 
TStudent TStudent::operator= (TStudent& Student) //Оператор присвоения
{
if (this == &Student) //проверка на самоприсваивание
return *this;
 
delete [] LastName;
delete [] FirstName;
delete [] Patronimyc;
delete [] Group;
 
     LastName = new char[strlen(Student.LastName) + 1]; 
    FirstName = new char[strlen(Student.FirstName) + 1];
    Patronimyc = new char[strlen(Student.Patronimyc) + 1];
     Group = new char[strlen(Student.Group) + 1];
strcpy(LastName, Student.LastName);
   strcpy(FirstName, Student.FirstName);
   strcpy(Patronimyc, Student.Patronimyc);
   strcpy(Group, Student.Group);
     Born = Student.Born;
    return *this;
}
Добавлено через 2 минуты
даже еще лучше возвращать объект в операции присваивания по ссылке, а не по значению, т.е.

C++
1
TStudent& TStudent::operator= (TStudent& Student) //Оператор присвоения
соответственно в классе тоже нужно изменить прототип это функции

Добавлено через 3 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
Неопределенности нет. В данном случае поля не будут проинициализированы вовсе.
Ну а в чем тогда польза такого конструктора, если поля не будут проинициализированы вовсе?

Добавлено через 1 минуту
Адренс Аксидор, еще лучше так будет написать
C++
1
TStudent& TStudent::operator= (const TStudent& Student) //Оператор присвоения
Добавлено через 2 минуты
Адренс Аксидор, будут ошибки еще выкладывайте)у меня IDE под рукой сейчас нет, поэтому пишу прямо здесь
 
Текущее время: 05:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru