私はudemyで初心者コースを終了しましたが、私はいつもポインタを理解するのに苦労しています。今度はこの境界を通過したいと思っています。この質問のポイント、インストラクターがここで説明するように、彼はそれらを割り当てられたオブジェクトのポインタを作成している間: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 *を持つPersonクラスです。
E2:はい、高度なC内のすべてのこれらの構造、ベクトル、リスト、マップおよび多くのC++ 11の機能を使用すると、配列内のオブジェクトから新しいオブジェクトとコピーデータを作成するrの最初のケースでは
[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