有以下构造函数:
CEx04aView::CEx04aView() : m_rectEllipse(0, 0, 200, 200)
{
m_nColor = GRAY_BRUSH;
}不知: m_rectEllipse(0, 0, 200, 200)代表什么意思,为何可以写到函数体之外,有什么依据,谢谢
CEx04aView::CEx04aView() : m_rectEllipse(0, 0, 200, 200)
{
m_nColor = GRAY_BRUSH;
}不知: m_rectEllipse(0, 0, 200, 200)代表什么意思,为何可以写到函数体之外,有什么依据,谢谢
解决方案 »
- 问下家一个关于IP地址的问题。
- 如何获取上次点击文件的全路径
- MFC的DLL 我想会让它加载后自动运行,可是没有dllmain函数,怎么办?
- 怎么取得CListCtrl中的内容?那位帮个忙!
- 谁把《VC技术内幕》(第五版)的“组建对象模型”一章代码发给我,50分酬谢!
- VC中怎么编译一个可执行文件,脱离VC环境运行,
- 急寻ASN.1编码的相关资料(源码)
- VC程序员面试通常会遇到那些问题?
- 我在注册表的run项目设置了 myprogram D:\myprogram.exe 的键值,问题!
- 怎么会出现这样的编译问题?
- activeX控件内部能不能直接连接sql server,如何连?
- 问一个很基础问题,我想使用cstring ,但不想使用MFC,该如何?
写在函数体内是否可以呢?谢谢
写在函数体内和CEx04aView::CEx04aView() : m_rectEllipse(0, 0, 200, 200)等价
另外有一种和它形式相同的情况:给基类构造函数传递参数。如:
Derived::Derived(int a, int b) : Base(a)//基类只要一个参数
{
...
}
class test
{
CRect rect;
int i;
long l;
float f;
int array[3];
double d;
test();
};test::test():rect(0,0,100,100),i(10),l(20),f(24.5),d(3.14159265)
{
//把类中的数据成员的初始化的值写在外面,这是函数初始化的一种方法
//这种写法要注意参数的顺序要和类中定义时的顺序一样,且一一对应
//有些数据成员的值难以写在外面时也可以在这里面补充,如array[]数组一类
array[0]=0;
array[1]=1;
array[2]=2;
}上面的构造函数的写法及作用和下面的写法完全等同:
test::test()
{
rect=CRect::CRect(0,0,100,100);
i=10;
l=20;
f=24.5;
array[0]=0;
array[1]=1;
array[2]=2;
d=3.14159265;
}
写在函数体内是否可以呢?
--------------------------------------------------------
可以,在函数体内可写成如下形式:
m_rectEllipse=CRect::CRect(0,0,200,200);