Ввод строки в c++

348
03 ноября 2017, 10:59

Подскажите пожалуйста, правильно ли я реализовал ввод строки?

#include <iostream>
#include <stdio.h>
using namespace std;
class FirstClass
{
    protected:
        int str_size;
    public:
        char* str_value;
    FirstClass() {}
    FirstClass( int size ) {
        str_size = size;
        str_value = new char[str_size];
    }
    void set(char* value) {
        str_value = value;
    }
    char* get() {
        return str_value;
    }
};
int main() {
    FirstClass object(11);
    object.set("dddddddddd");
    printf("%s", object.get());
    return 0;
}

Выводит всё правильно и без ошибок.

Answer 1

Нет, неправильно. Потому что вы как минимум теряете выделенную в конструкторе память, а сохраняете не саму строку, а указатель на нее.

Т.е., например, выполните

FirstClass object(1);
char s[] = "11111";
object.set(s);
object.get();
s[1] = '2';
object.get();

и вы увидите, что вывод - разный. Вряд ли это то, что вы хотите...

Update

void set(const char* value) {
    delete[] str_value;
    str_value = new char[strlen(value)+1];
    strcpy(str_value, value);
}
FirstClass(const char* value):str_value(nullptr)
{
    set(value);
}
~FirstClass() { delete[] str_value; }

Само собой, нужно в том же духе переписать оператор присваивания и копирующий конструктор...

Да, и

protected:
    int str_size;
public:
    char* str_value;

превратите в

private:
    char* str_value;

а

char* get() {

в

const char* get() {
READ ALSO
Как в JQuery реализовать проверку на волидность, если на форме 3 кнопки и для каждой существует свое правило?

Как в JQuery реализовать проверку на волидность, если на форме 3 кнопки и для каждой существует свое правило?

На странице JSP находиться форма для добавления данных в БД с 3 кнопками (Add,Update,Delete)

221
AJAX скролит элемент наверх

AJAX скролит элемент наверх

Привет, на протяжении долгого времени долблюсь с AJAXЕсть что-то на подобие чата

318
Производительность сайта edge

Производительность сайта edge

Плохая производительность сайта edge проблема в верстке есть ли какие то свойства для ускорения сайта на edge?

236
Проблема с работой jquery в electron . [требует правки]

Проблема с работой jquery в electron . [требует правки]

Делаю программу на electronПодключил jquery, и после написания кода решил запустить её

232