Re: Як створити екземпляр класу і як додати в нього конструктора?
А як же заохочення? Написав алгоритм - з’їв бутер, не написав - сиди голодний. А то так і бутерів об’їсишся і нічого не знатимеш
ви мені краще задачку підкиньте, а не жартами сипте
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Як створити екземпляр класу і як додати в нього конструктора?
Сторінки Попередня 1 2 3 4 … 8 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
А як же заохочення? Написав алгоритм - з’їв бутер, не написав - сиди голодний. А то так і бутерів об’їсишся і нічого не знатимеш
ви мені краще задачку підкиньте, а не жартами сипте
Тоді напишіть свій std::string, теж непогане завдання.
Тоді напишіть свій std::string, теж непогане завдання.
воно таке саме як і в c# ?
По-перше, хіба в C# є std::string? По-друге, вам нема де подивитися? По-третє - та який завгодно клас для роботи з рядками, з відповідними функціями.
с c# є просто стрінг, так якщо цей myString буде класом, то як мені його ініалізувати таким способом
myString s = "sdfsd";
дайте сказать. Перевизначення операції "=" ?
myString s = "sdfsd";
дайте сказать. Перевизначення операції "=" ?
Не вгадали. Якщо ви створюєте змінну і одразу надаєте їй значення, то викликається конструктор з параметром, а не конструктор за замовчанням і потім operator =. Тобто
myString s = "asd";
еквівалентно
myString s("asd");
а якщо хочете викликати operator =, то треба писати
myString s;
s = "asd";
Душевно я налайнокодив. Хтів зробити, аби можна було б додавати до строки новий шматочок за допомогою +, взнавати довжину та виводити в cout
Виводить все вірно, але при закритті консольки вилазить ось це
Подумай якого розміру в char str[] в класі, і скільки символів ти нього записуєш. Чи достатньо тобі масиву такого розміру?
UPD. До того ж зверни увагу на фунцію sizeof...
Подумай якого розміру в char str[] в класі, і скільки символів ти нього записуєш. Чи достатньо тобі масиву такого розміру?
UPD. До того ж зверни увагу на фунцію sizeof...
я взагалі хз, який розмір того char[]. Я ж його ніде не зазначав.
Просто створив char[], а потім пихаю в нього все по індексам.
А нащо мені sizeof? воно наче показує розмір в байтах. Я ще так шукав довжину якогось там масиву, в іншій лабі. Робив sizeof(arr)/sizeof(arr[0])
Массив char[] розміру 0, якщо я не помиляюсь, тобто все що ви туди пишете виходить за межі масиву.
А sizeof визначає розмір типу аргументу, не аргументу, а саме його типу. Тобто sizeof(char *) рівно 8 у 64-бітній системі і рівно 4 в 32-бітній системі.
а, значить це був не char*, а char[]
p.s. а то нормально, що я виходжу за кордони масиву?
Це зовсім ненормально, ви порушуєте ті дані які знаходяться за масивом - записуєте туди щось своє.
Це зовсім ненормально, ви порушуєте ті дані які знаходяться за масивом - записуєте туди щось своє.
А як же мені тоді зробити оту операцію + ? Робити якийсь масив довжиною 100000000000000000000000000?
Резервувати місце. Якщо не вистачає - додавати.
Резервувати місце. Якщо не вистачає - додавати.
ммм. щось таке пам'ятаю, там ще використовувались якісь maloc caloc, чи якось так
koala написав:Резервувати місце. Якщо не вистачає - додавати.
ммм. щось таке пам'ятаю, там ще використовувались якісь maloc caloc, чи якось так
Я запропонував би виділяти деяку кількість пам'яті з самого початку і слідкувати за кількістю елементів:
char c[INITIAL_SIZE];
int counter = 0;
Коли counter стане більшим за початковий розмір, створюємо новий масив, скажімо, в півтора рази більший, копіюємо туди початковий, а сам початковий масив вбиваємо.
malloc і calloc непотрібні.
Розкажіть, як ви збираєтеся вбивати масив з фіксованим розміром.
Розкажіть, як ви збираєтеся вбивати масив з фіксованим розміром.
Навіть не задумувався як, а що? Завжди є new/delete[].
Так щоб delete щось, його треба спершу new. От
char *container = new char[ INITIAL_SIZE ];
можна delete-ати. Але не ваш масив.