私はC++を初めて使用し、学習しています。私はかなりの量のJavaといくつかのCを知っています。
私がやりたいのは、文字列値を取り込んでその文字列をクラスフィールドにコピーし、最終的に文字列よりもはるかに効率的に解析できるIDにハッシュする不変の名前クラスを作成することです。
C ++文字列に関する一般的な知識が不足しているため、壁にぶつかっています。これが私がこれまでに持っているものです...
#pragma once
#include <string>
class Name
{
public:
Name(std::string s);
~Name(void);
int getId();
std::string getName();
private:
int id;
std::string name;
};
と...
#include "Name.h"
Name::Name(std::string s)
{
}
したがって、私がやりたいのは、コンストラクターによって渡されたsの値を「name」プライベートフィールドに格納することです。私の知る限り、新しい文字列オブジェクトを作成してから、sの値をそのオブジェクトにコピーする必要があります。
また、引数sは、文字列オブジェクトではなく文字列ポインタである可能性があり、またそうあるべきだと思います(不要なコピーが発生しないようにするため)。私が正しければ、コンストラクターは次のようになりますよね?
Name::Name(std::string &s) { ... }
この場合、名前を渡すときに特別なことをする必要はありませんか?IE。
Name n = new Name("Cody");
完全に有効ですか?実は、私の知る限り「コーディ」は一定の文字列かそのようなものなので、よくわかりません。
それで、私がすべて正しい軌道に乗っている場合、実際に値をコピーする適切な方法は何ですか?これは適切だと思いますが、よくわかりません。
#include "Name.h"
Name::Name(std::string s)
{
name = new string(s);
}
事前に助けてくれてありがとう、それが基本的な質問であることは知っていますが、私はゆっくりとC++の世界に足を踏み入れています。:)-コーディ