gpt4 book ai didi

c++ - 在指针上使用*运算符是否会创建拷贝?

转载 作者:行者123 更新时间:2023-12-02 09:58:08 25 4
gpt4 key购买 nike

我一直对此感到好奇。假设我们有以下几种情况来访问存储在动态分配的内存中的类的数据成员:

class C {
public :
C() = default;
int a = 4;
}

int main () {
C * ptr = new C();
std::cout << "pointer->::" << ptr->a << std::endl;
std::cout << "dereference*().::" << (*ptr).a << std::endl;
}
我确定指针方法是首选方法,而且我的猜测是,至少在C++中,对指针的解引用可以提供引用。但是在C中没有引用(并假设进行了适当的修改以将类转换为struct等)的地方,像这样取消引用和访问成员会导致临时浅拷贝吗?这是编译器优化的吗?

最佳答案

在C和C++中,*p(解引用)和p->m(通过指针进行成员访问)都是"lvalue expressions"。左值“评估对象标识”。 *pp->m本身不会创建副本,它引用的是已存在的变量。

关于c++ - 在指针上使用*运算符是否会创建拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64255497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com