Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 26.06.2018
Сообщений: 1
1

Ошибка с пользовательским типом

29.06.2018, 12:42. Показов 428. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я изучаю С++ и недавно столкнулся с проблемой которую не могу решить. Её суть заключается в следующем: при создании пользовательского типа и попытке создать объект этого типа вместо задаваемых ему значений его члены принимают "мусорные значения". Вот пример кода:

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
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
 
using namespace std;
 
class myClass{
public:
   myClass(int a, int b);
   void print();
private:
   int a;
   int b;
};
 
myClass::myClass(int a, int b){
   
}
 
void myClass::print(){
      cout << a << ' ' << b << '\n';
}
 
 
 
int main(){
   myClass something{1, 2};
   something.print();
 
   return 0;
}
Вместо 1 2 вывелось 2686824 4201067
Если задавать значения по умолчанию, то они же и выводятся.
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
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
 
using namespace std;
 
class myClass{
public:
   myClass(int a, int b);
   void print();
private:
   int a;
   int b;
};
 
myClass::myClass(int a, int b)
   :a{5}, b{5}
{
}
 
void myClass::print(){
      cout << a << ' ' << b << '\n';
}
 
 
 
int main(){
   myClass something{1, 2};
   something.print();
 
   return 0;
}
Вывод: 5 5
Что я делаю не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2018, 12:42
Ответы с готовыми решениями:

В чем разница между типом функции и типом возвращаемого значения?
Читаю статью https:// code-live. ru/post/cpp-functions/ (ссылку изменил дабы не делать рекламу) ...

Ошибка с типом
помогите пожалуйста найти ошибку Не могу скомпилировать программу пишет что проблема с типом...

QQueue с пользовательским типом
Доброго времени суток. Хочу создать очередь объектов класса своего типа: #ifndef TTASK_H...

Написать программу, работающую с пользовательским типом, состоящим из 6 полей
Написать программу, работающую с пользовательским типом, состоящим из 6 полей: - имя (15 символов)...

2
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
29.06.2018, 12:45 2
Параметры конструктора и члены класса - это разные переменные.
C++
1
2
3
4
myClass::myClass(int a, int b)
   :a{a}, b{b}
{
}
1
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
29.06.2018, 12:57 3
Цитата Сообщение от Forestman Посмотреть сообщение
Что я делаю не так?
Относитесь к методам класса как к обычным функциям со скрытым параметром this - указателем на текущий объект.
Конструктор - это такая же функция со своими параметрами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class myClass{
public:
   myClass(int a, int b); // myClass_ctor(myClass* const this, int a, int b) - параметры функции, а не поля объекта
   void print(); // myClass_print(myClass* const this)
private:
   int a; // this->a - поле объекта
   int b; // this->b - поле объекта
};
 
myClass::myClass(int a, int b) // int a и int b - параметры функции, а не поля объекта
{
   
}
во втором варианте вы почти все сделали - только нужно было инициализировать поля параметрами
C++
1
2
3
4
myClass::myClass(int a, int b)
   :a{a}, b{b} // имя_поля{имя_параметра}
{
}
1
29.06.2018, 12:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2018, 12:57
Помогаю со студенческими работами здесь

Задачи связанные с коллекциями, окном Immediate, классом и пользовательским типом
Доброго вечера. Помогите с решением нескольких задачек, пожалуйста. 1. Дана коллекция,...

Чтение запись текстовых файлов с пользовательским типом данных
помогите пожалуйста записать и считать пользовательский тип данных. Вот мои наброски, он вроде...

Ошибка SQLException не обработано пользовательским кодом
В разработке на MVC я новичок, и по-этому начал разбирать уроки одного из пользователей из Хабра. И...

Ошибка при запуске окна с пользовательским элементом
При компиляции выдается ошибка &quot;Вызов конструктора для типа &quot;MP3RShuffle.MainWindow&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru