gpt4 book ai didi

c++ - 为什么 "TYPE* const"指针有不同的行为?

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:55 28 4
gpt4 key购买 nike

下面的代码处理一个TYPE*​​ const指针。

struct D {
void Check ()
{
D* const p = new D; // 2nd test is "p = 0;"
cout<<"p = "<<p<<endl;
(D*&)p = new D;
cout<<"p = "<<p<<endl; // prints 0, "p = 0;" at declaration
}
};

int main ()
{
D o;
o.Check();
}

我的问题是,

  1. 如果您使用0 进行初始化,那么即使下次进行类型转换也不会起作用。进行此类类型转换是未定义的行为吗?
  2. this指针也是TYPE*​​ const类型,那为什么编译器不允许对this进行同样的操作呢?

最佳答案

Is doing such typecasting is undefined behavior ?

是的。

(D*&)p = new D;

它调用未定义的行为,因为它试图更改 const 指针。

回想一下,D* const p 声明了一个变量 p,它是一个指向非 const Dconst 指针>.

关于c++ - 为什么 "TYPE* const"指针有不同的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5659157/

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