小编no *_*ver的帖子

成员函数如何理解通过取消引用const指针获得对象?

我创建了一个const指针,该指针指向动态分配的abject实例。我无法理解对象本身是否是const。

首先,我试图通过使用指针来调用非常量成员函数,这正如预期的那样会导致编译错误,因为(这是我的解释,不知道它是否为真)该成员函数创建的指针被分配给了该const指针。它没有产生任何东西。

其次,我尝试取消引用指针并调用该非const成员函数。我认为成员函数现在创建的this指针将不再是const指针,因为compile无法知道p(即*p)返回的对象是否由const指针返回。原来我错了。

成员函数如何理解这一点?

#include<iostream>

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

 void   print()
    {
        std::cout<<a<<std::endl;
    }
};


int main()
{
    const A* p = new A();  

   p->print(); //1 causes compile error
   (*p).print(); //2 causes compile error


  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为标记为2的行不会产生编译错误。它会导致编译错误。错误消息是:

"a.cpp: In function ‘int main()’:
a.cpp:21:13: error: passing ‘const A’ as ‘this’ argument discards qualifiers [-fpermissive]
    p->print(); //1 causes compile error
             ^
a.cpp:10:9: note:   in call to ‘void A::print()’
  void   print()
         ^~~~~
a.cpp:22:15: error: …
Run Code Online (Sandbox Code Playgroud)

c++ pointers const class

2
推荐指数
1
解决办法
80
查看次数

如何将x打印为0x,其中x是整数C ++

我想打印出一个类似于minutes:second.miliseconds的时间。想想那个时间是4分钟2秒65毫秒,
而不是像4:2.65那样写,我想像4:02.065那样写?

c++ cout

0
推荐指数
2
解决办法
71
查看次数

标签 统计

c++ ×2

class ×1

const ×1

cout ×1

pointers ×1