如何操纵指针代表C ++的对象

时间:2017-06-06 15:46:14

标签: c++ pointers reference

我正在构建一个数据结构,需要操纵指针指示的对象。指针指示的对象是:

//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
}

这可以通过引用传递来实现,还是必须通过值传递?

1 个答案:

答案 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;
}