求c++中成员函数的调用方式?

u010019491 2013-05-14 06:21:06
我记得自己学c++的时候,类的成员函数,除了静态成员函数由类名调用外,其他成员函数都由类的对象来调用,时隔这么长的时间了,不知道这么理解是否正确。在这里提问,是看到了别人写的代码和我的理解有点不一致,于是就产生了疑问,难道我的理解错误了。别人写的代码是这样子的:


class CColourPopup : public CWnd
{
// Construction
public:
CColourPopup();
CColourPopup(CPoint p, COLORREF crColour, CWnd* pParentWnd,
LPCTSTR szDefaultText = NULL, LPCTSTR szCustomText = NULL);
void Initialise();

// Attributes
public:

// Operations
public:
BOOL Create(CPoint p, /*COLORREF crColour, */CWnd* pParentWnd,
LPCTSTR szDefaultText = NULL, LPCTSTR szCustomText = NULL);

......



CColourPopup::CColourPopup(CPoint p, COLORREF crColour, CWnd* pParentWnd,
LPCTSTR szDefaultText /* = NULL */,
LPCTSTR szCustomText /* = NULL */)
{
Initialise();

m_crColour = m_crInitialColour = crColour;
m_pParent = pParentWnd;
m_strDefaultText = (szDefaultText)? szDefaultText : _T("");
m_strCustomText = (szCustomText)? szCustomText : _T("");

CColourPopup::Create(p, crColour, pParentWnd, szDefaultText, szCustomText);
}



疑问:Create函数定义为CColourPopup类的public访问级别,按照我自己的理解,Create函数应该由CColourPopup类的对象调用,但是在CColourPopup类的构造函数中却用类名CColourPopup调用了Create函数,这是为什么,我该如何去理解呢?

学了多年的c++,连最基础的都忘记了,让大家见笑了,嘿嘿!!!

希望大家帮帮我哦,我的积分也不是很多了,希望大家见谅
...全文
375 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yTPetGo 2013-05-18
  • 打赏
  • 举报
回复
记得effective中有节就是说,构造函数中不要调用虚函数
阿麦 2013-05-17
  • 打赏
  • 举报
回复
两个类都有Create。为了区分到底是调用哪个类的Create吧
buyong 2013-05-17
  • 打赏
  • 举报
回复
相当于直接写:Create(p, crColour, pParentWnd, szDefaultText, szCustomText); 就是类的成员函数中调用另一个成员函数。
SKATE11 2013-05-17
  • 打赏
  • 举报
回复
引用 1 楼 Automation_dmu 的回复:
CColourPopup 继承于 CWnd , 且重写了Create()方法,Create在CWnd中声明为虚函数, 构造函数中不允许使用虚机制。 create()前加上CColourPopup::表示一个静态绑定,用于调用CColourPopup本地的Create()方法。这里其实不加也可以,C++编译器会自动忽略构造函数中的虚机制。
++
asdjy123 2013-05-14
  • 打赏
  • 举报
回复
学习了,
AndyStevens 2013-05-14
  • 打赏
  • 举报
回复
CColourPopup 继承于 CWnd , 且重写了Create()方法,Create在CWnd中声明为虚函数, 构造函数中不允许使用虚机制。 create()前加上CColourPopup::表示一个静态绑定,用于调用CColourPopup本地的Create()方法。这里其实不加也可以,C++编译器会自动忽略构造函数中的虚机制。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧