Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ int*const a=int-const*b,这对obj是真的吗(obj*const a=obj-const*b)?_C++ - Fatal编程技术网

C++ int*const a=int-const*b,这对obj是真的吗(obj*const a=obj-const*b)?

C++ int*const a=int-const*b,这对obj是真的吗(obj*const a=obj-const*b)?,c++,C++,在这个问题上,他们说 好吧,这是真的吗 但当我在本例中的对象中使用它时,来自CEGUI库的direct3ddevice和GUI对象 看看这个 void GUI_Menu::Add_Popup( MenuItem const *Parent ,const String &Name ) { PopMenu.resize (Popup_Menu_ID+1 ); PopMenu.at (Popup_Menu_ID) = static_cast <PopupMenu*>

在这个问题上,他们说

好吧,这是真的吗

但当我在本例中的对象中使用它时,来自CEGUI库的direct3ddevice和GUI对象

看看这个

void GUI_Menu::Add_Popup( MenuItem const *Parent ,const String &Name )
{
    PopMenu.resize (Popup_Menu_ID+1 );
    PopMenu.at (Popup_Menu_ID) = static_cast <PopupMenu*>  (CEGUI::WindowManager::getSingletonPtr()->createWindow ("TaharezLook/PopupMenu" , Name));

    Parent->addChildWindow (PopMenu.at (Popup_Menu_ID)); 
    Popup_Menu_ID++ ;
} 
我会解释为什么我的观点是错误的,并告诉你这是假的还是真的

MenuItem是一个包含数据和函数的类,这些数据必须在需要时更新

例如文字、颜色、大小等

现在,如果我像这样创建新的MenuItem Obj

MenuItem const *Obj
那是什么意思

这意味着我们不能更改obj内的数据,但可以更改地址 在另一个世界

值是恒定的,但地址不是恒定的,如果我们想改变颜色、大小……等等,我们不能,我们得到错误…………这是真的吗

另一方面,我们有相同的代码,但常数会随之改变

void GUI_Menu::Add_Popup( MenuItem *const Parent ,const String &Name )
{
    PopMenu.resize (Popup_Menu_ID+1 );
    PopMenu.at (Popup_Menu_ID) = static_cast <PopupMenu*> (CEGUI::WindowManager::getSingletonPtr()->createWindow ("TaharezLook/PopupMenu" , Name));

    Parent->addChildWindow (PopMenu.at (Popup_Menu_ID)); 
    Popup_Menu_ID++ ;
}
新行的意思是我们可以更改值,但不能更改地址

 obj *const a = obj const *b 

这是错误的

您的初始前提不正确。int*常量a与int*常量b的类型不同。第一个是指向非常量int的常量指针。第二个是指向常量int的非常量指针。

如果const关键字位于指针符号的左侧,则它们是等效的:

const int* pA == int const* pB
如果const在右边,那就不同了。在第一种情况下,数据是常量,而指针不是常量,在后一种情况下则相反:指针是常量,而数据不是常量


看看,它应该会让你明白。

你需要提高你的接受率。另外,你的问题是什么还不清楚。常数int*==int const*是真的,但int*const是不同的。所以你是对的,最后一个等价物是错的。
MenuItem *const Parent
 obj *const a = obj const *b 
const int* pA == int const* pB