C++ int*const a=int-const*b,这对obj是真的吗(obj*const a=obj-const*b)?
在这个问题上,他们说 好吧,这是真的吗 但当我在本例中的对象中使用它时,来自CEGUI库的direct3ddevice和GUI对象 看看这个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*>
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