そのため、私は常に C++ ポインターと ... 他のポインターの名前が何であれ、少しあいまいでした。お気に入り、
Object* pointer = new Object();
対。
Object notpointer();
2つ目はおそらくポインターが関係していることはわかっていますが、基本的にはポインターではありません。(実際には何と呼ばれているのですか?)
さらに、最初のものについては、電話する必要があると思います
delete pointer;
それをやり終えたら、ある時点でそうですよね?もう一つは、気にする必要はありません。最初のものはヒープに割り当てられていますが、2番目のものはスタックに割り当てられており、メソッドが戻ると消えます。
しかし、関数から何か (プリミティブではない) を返す場合はどうでしょうか?
良い例は、Should I return std::strings? に書かれています。:
std::string linux_settings_provider::get_home_folder() {
return std::string(getenv("HOME"));
}
前に書いたように、文字列はスタックに割り当てられ、関数が戻ったときに解放されるはずですよね? しかし、誰もそれについて何も言わなかったので、うまく機能していると思います。なんで?
一般的に、次の違いは何ですか
return new std::string("pointer");
と
return std::string("not-pointer");
?
また、両方が機能すると仮定すると、2 つの長所と短所は何ですか?