Я закончил курс начинающих по удемии, но я всегда стараюсь с пониманием указателей, я начал много раз, и указатели разбивали мое любопытство на программирование каждый раз. Теперь я, наконец, хочу пройти эту границу. Суть этого вопроса, в то время как инструктор создает указатель на объект, он выделил их, как описано здесь:C++/Лучшая практика для работы с указателями
person* k = new person[3] ;
for (i=0;i<3;i++){
// Why did he create a new person and copy the object from a pointer?
// isn't this wastage of space or has it a good reason.
person a_person = k[i] ;
char *name = "Superman" ;
a_person.set_name(name, strlen(name)) ;
a_person.set_age(30) ;
a_person.describe() ;
// isn't this better? Directly using the pointer to access the memory
// our pointer is pointing and change the variables there?
char *surname = "Spiderman" ;
(k+i)->set_name(surname, strlen(name)) ;
(k+i)->set_age(10) ;
(k+i)->describe();
}
class person {
public:
person();
~person();
int length() ;
void get_addresses();
int getid() ;
void set_name(char *ptr_name, size_t bytes) ;
char* get_name() ;
int get_age() ;
void describe() ;
void set_age(int number) ;
private:
char* name ;
int age ;
int id ;
size_t bytes = 30 ;
int get_unique() ;
int setid() ;
};
E: Курс был другой код, но почему-то я должен попробовать, так что я построил этот класс человека с некоторыми функциями и char *.
E2: да, в усовершенствованном C++ являются все эти структуры, векторы, списки, карты и многие C++ 11 функции, упомянутые
[Лучшая практика для C++ и обладающих ресурсами указателей] (https://dl.dropboxusercontent.com/u/6101039/Modern%20C%2B%2B.pdf). – WhozCraig
Это ужасный код, как для C, так и для C++. Какой бы инструктор у вас ни был, брось сейчас и никогда не слушай ничего, что они говорят снова. Затем [прочитайте книгу] (http://stackoverflow.com/a/388282/3484570). – nwp
обучение на примере: http://stackoverflow.com/questions/41930685/passing-pointer-from-function-to-function/41930944#41930944 – sameerkn