理解const自动指针

时间:2018-03-26 22:09:26

标签: c++ c++11

考虑:

PS C:\src\t> $gss = Invoke-Command -ScriptBlock { Get-Service } -ComputerName SERVER01

PS C:\src\t> $gss[0].GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     PSObject                                 System.Object

PS C:\src\t> $gss[0] | Get-Member

   TypeName: Deserialized.System.ServiceProcess.ServiceController

为什么案例i3有效?我一直认为,在这种情况下,int main() { int * i0 = new int; *i0 = 666; // OK const int * i1 = new int; *i1 = 666; // FAIL due to const auto i2 = new int; *i2 = 666; // OK const auto i3 = new int; *i3 = 666; // OK, WHY? const auto * i4 = new int; *i4 = 666; // FAIL due to const return 0; } 会隐含const auto,但我想情况并非如此?

1 个答案:

答案 0 :(得分:6)

const auto i3 = new int;

执行此操作时,const将应用于指针,而不是指向它指向的对象。

这相当于:

int* const i3 = new int;

这意味着,

i3 = new int(20);

无效,但

*i3 = 666;

会奏效。