Как динамически в параметризованном конструкторе?

0

я wnat этот объект "name_of_pro" динамически выделяется в параметризованном конструкторе. я пытаюсь, но я думаю, что это не так

---------------------------------------...

class employee{ 
string name, ID, *name_of_pro; 
int age ; 
float salary ; 
public: 
employee(){}; 

employee ( string n,int ag, float sa , string name_pro){ // constructor. parameterized 
name=n; 
age=ag; 
salary=sa; 
name_of_pro=new string; 
} 

я надеюсь, что помощь плз.

Теги:

1 ответ

1
Лучший ответ

Я не совсем уверен, понимаю ли я ваш вопрос, но я думаю, что вы можете иметь в виду, что вы хотите, чтобы name_of_pro являлся копией name_pro.

employee ( string n, int ag, float sa , string name_pro){ 
    name=n; 
    age=ag; 
    salary=sa; 
    name_of_pro=new string(name_pro);  // You can make a pointer to a copy this way
} 

Вам просто нужно убедиться, что вы удалите строку name_of_pro в деструкторе, если это то, что вы хотите сделать.

~employee() {
    delete name_of_pro;
}

Что может быть еще проще, это список инициализации вместо всех простых назначений.

employee ( string name, int age, float salary , string name_pro) : 
        name(name), age(age), salary(salary), name_of_pro(new string(name_pro)) { 
}

Дайте мне знать, если это не ответит на ваш вопрос.

  • 0
    Я добавлю это только для того, чтобы показать, что вы можете это сделать, но я думаю, что динамическое распределение в списке инициализации во многих случаях не является хорошей идеей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню