我正在构建一个数据结构,需要操纵指针指示的对象。指针指示的对象是:
//in header file
struct treeNode{
int value;
treeNode* left;
treeNode* right;
};
我当前的实现仅更改指针所指向的内容。
target->value = oneLarger->value
定义了Target和oneLarger:
void method(treeNode* target){
treeNode* oneLarger = (tree node retrieved by another method)
target->value = more->value
}
这可以通过引用传递来实现,还是必须通过值传递?
答案 0 :(得分:2)
您可以:通过指针,参考,复制
请注意,只要函数完成,byCopy函数中的更改就会丢失!
这些选项如下:
//by Pointer
void method(treeNode* target) {
treeNode* oneLarger = ...
target->value = oneLarger->value;
}
//by Ref
// since that is a ref, you access the value using the dot(.) and not the `->` operator
void method(treeNode& target) {
treeNode* oneLarger = ...
target.value = oneLarger->value;
}
//by Copy
// since that is a copy, you access the value using the dot(.) and not the `->` operator
void method(treeNode target) {
treeNode* oneLarger = ...
target.value = oneLarger->value;
}