按说只有静态成员函数才能在类实例化之前就可以直接使用,但是VC中到处可以看到诸如类名::函数名()的用法,比如CWnd::SetDlgItemText
我的困惑就是,我查找了SetDlgItemText的定义和声明,它并不是静态成员函数啊,为何能直接调用呢,还是说C++的类的函数无论是否静态,只要不涉及到其它成员变量和函数,就可以用域操作符在任何地方调用?
我的困惑就是,我查找了SetDlgItemText的定义和声明,它并不是静态成员函数啊,为何能直接调用呢,还是说C++的类的函数无论是否静态,只要不涉及到其它成员变量和函数,就可以用域操作符在任何地方调用?
解决方案 »
- VC里面设定 启动画面 后:Cannot open include file: 'CSplashWnd.h'
- 自定义系统消息,自己收不到,请高手赐教,可加分
- 需要的头文件
- 我新建一个控制台程序时就出现在大量错误??
- ListCtrl问题 在线等待 50 分
- 如何在网页中调用com控件
- modbus rtu vc++ mscomm串口调试助手
- 如何用VC6制作“资源管理器”风格的工具条,以及如何在对话框中制作工具条按钮风格的按钮??
- 一个有关双缓冲绘图的问题,大神们看看有什么问题!!!
- 用createthread创建的线程为什么用运行accept(...)后函数就不能运行了
- 关于类成员变量 导出如何处理
- VC++ 并口问题 !
virtual void test();
};
class B{
void test();
void test1() {
A::test();//ok
}
};
void main()
{
A::test()//error
}
双冒号在这个地方叫做域操作符,表示这个函数是前面对象的一个方法。“事实的调用主动方仍然是一个实例化后的对象?”这么说不准确,调用的主动方是CWnd::SetDlgItemText这个代码所处的方法。实例化的对象是这些非静态函数能够执行的前提。