関数にポインタの参照を渡す場合と、ポインタを直で渡す場合、
ポインタの指す先を変えられるかどうかが異なる点は理解しています。
しかし、例えばrosのコールバック関数にはboost::shared_ptrのconst参照を渡します。
typedef boost::shared_ptr<const std_msgs::String> std_msgs::String::ConstPtr void callback(const std_msgs::String::ConstPtr& msg)
この場合、const参照であることでmsgの指す先を変えられないようにして、
boost::shard_ptr<const std_msg::String>でmsgの内容を書き換えられない様になっていると思うのですが、
std_msgs::String::ConstPtrをそのまま渡さないのはなぜでしょうか?
sharedポインタのコピーオーバヘッドを避けている?様にも見えますが、
ポインタのコピーオーバヘッドがそこまで大きいとは思えません。
こういったコーディングは何を目的としているのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。