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

Инициализация членов в объявлении класса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись вектора в бинарный файл http://www.cyberforum.ru/cpp-beginners/thread1654657.html
Здравствуйте, пытаюсь сделать запись вектора из обьектов моего класа в бинарный файл, но получаю не понятного рода символы в значениях атрибутов класа. Вот код: void save() { ofstream fout("data.dat", ios::out | ios::binary | ios::trunc); fout.write(reinterpret_cast<const char*>(&humans), humans.size()*sizeof(Human)); fout.close(); }
C++ Как записать строчную букву в заглавную? В первой подпрограмме (formating_1) нужно что-бы программа записала фразу "привет мир. hello world" как "Привет мир. Hello world" по коду ниже, программа меняет только букву "П", а буква "h" остается без изменений. Вопрос: где ошибка в коде и как исправить? (Малая буква - символ, код которого лежит в пределах от 97 до 122 (латиница), от 224 до 255 (кириллица) по таблице ASCII. Большая буква... http://www.cyberforum.ru/cpp-beginners/thread1654646.html
Что не так в коде? (парсер текста) C++
есть условие: дан текст, состоящий из предложений, разделенных точками "привет мир. hello world". Напишите программу, что делать такое форматирование: после каждой точки в конце предложения текста должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с большой буквы. Примечание. Текст может быть набран как на украинском, русском, так и английском языках....
C++ Книги по ИКТ
Доброго времени суток, уважаемые обитатели. Готовлюсь к региональной олимпиаде по Информационным Компьютерным Технологиям. Прошу у вас помощи, так как надеюсь на вашу осведомленность в этом вопросе. Помогите, подскажите книги для подготовки к этой олимпиаде. Заранее благодарен.
C++ Lambda expressions only available with -std=c++11 or -std=gnu++11 http://www.cyberforum.ru/cpp-beginners/thread1654587.html
В студии все работает, в qt попробовал mingw - выводит варнинг lambda expressions only available with -std=c++11 or -std=gnu++11 а потом no matching function for call to 'for_each с mvcc приложение запустилось у тут же скрашилось Код везде проверял один и тотже. vector<int> someVec; for(int i = 0; i < 100; i++) someVec.push_back(rand()%i);
C++ Использование ассемблера Вообщем есть два файла main.cpp и add.S. Первый содержит код для компилятора g++, а также вызов внешней функции add. Функция add определяется в файле add.S и написана на ассемблере. Для g++ строка "g++ main.cpp add.S" создает работающую программу, то есть все OK. Но вот компилятором "cl" ничего не выходит. Подскажите как скомпилировать данную программу с помощью компилятора "cl" (Visual Studio).... подробнее

Показать сообщение отдельно
vigord
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
04.02.2016, 07:54     Инициализация членов в объявлении класса
В классе:
C++
1
2
3
4
5
6
7
8
class peltier
{
public:
    material p = material('p');
    material n = material('n');
    peltier();
    ~peltier(void);
};
инициализируются два экземпляра класса с помощью параметризированного конструктора (конструктор по умолчанию отсутствует):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class material
{
    float a[4];
    float s[4];
    float k[4];
    float z[4];
public:
    material(char t);
    float polynomial(float p[], float t);
    float sigma(float temp);
    float sigma(float tcold, float thot);
    float alpha(float temp);
    float alpha(float tcold, float thot);
    float kappa(float temp);
    float kappa(float tcold, float thot);
    float Z(float temp);
    float Z(float tcold, float thot);
    ~material(void);
};
В конструкторе и деструкторе выводится сообщение о создании и разрушении объекта.
При выполнении данного кода:
C++
1
2
3
4
5
6
7
8
9
10
11
peltier mod;
    cout << "\nSigma p: " << mod.p.sigma(300) << "\t" << mod.p.sigma(325, 475);
    cout << "\nSigma n: " << mod.n.sigma(300) << "\t" << mod.n.sigma(325, 475);
    cout << "\nAlpha p: " << mod.p.alpha(300) << "\t" << mod.p.alpha(325, 475);
    cout << "\nAlpha n: " << mod.n.alpha(300) << "\t" << mod.n.alpha(325, 475);
    cout << "\nKappa p: " << mod.p.kappa(300) << "\t" << mod.p.kappa(325, 475);
    cout << "\nKappa n: " << mod.n.kappa(300) << "\t" << mod.n.kappa(325, 475);
    cout << "\nZp: " << mod.p.Z(300) << "\t" << mod.p.Z(325, 475);
    cout << "\nZn: " << mod.n.Z(300) << "\t" << mod.n.Z(325, 475) << endl;
    cout << "\nFor thot = 27C: deltaT = " << deltaT(300.f);
    cout << "\nFor thot = 50C: deltaT = " << deltaT(323.f) << endl;
получаю вывод:

p-type material is constructed!
p-type material is constructed!
p-type material is constructed!
p-type material is constructed!
n-type material is constructed!
n-type material is constructed!
n-type material is constructed!
n-type material is constructed!
Sigma p: 1785.06 1223.67
Sigma n: 1353.83 957.71
Alpha p: 159.709 186.921
Alpha n: 188.953 181.451
Kappa p: 1.63412 1.78137
Kappa n: 2.04664 2.27879
Zp: 2.8044 2.39947
Zn: 2.42295 1.46145

For thot = 27C: deltaT = 66.2841
For thot = 50C: deltaT = 75.6507

Почему материал создается четыре раза и ни один раз не разрушается? Что это за копии объектов и как они хранятся? С каким объектом работает программа и при каком условии будут удалены "лишние копии"?

И почему нельзя инициализировать:
C++
1
2
material p('p');
material n('n');
а нужно:
C++
1
2
material p = material('p');
material n = material('n');
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru