MFC中遇到的一个构造函数,求教

时间:2021-11-26 19:25:56
Cex13aView::Cex13aView():
  m_rect (0,0,100,100)
 
{
  m_bCircle = TURE;
  m_bPattern = FALSE;

// TODO: 在此处添加构造代码

}

这个构造函数名后面带着冒号是什么意思呢?

10 个解决方案

#1


初始化m_rect

#2


初始化表,用来初始化的

#3


这是一种什么形式呢?就是对出现在函数名后面的“:m_rect() ”这一部分不是很理解,把他们放进{}里面行吗?

#4


初始化列表。。。

Item_base(const std::string &book = "",
                   double sales_price = 0.0):
                          isbn(book), price(sales_price) { }
         std::string book() const { return isbn; }

#5


引用 3 楼  的回复:
这是一种什么形式呢?就是对出现在函数名后面的“:m_rect() ”这一部分不是很理解,把他们放进{}里面行吗?

初始化Cex13aView的时候先初始化基类非默认构造函数m_rect (0,0,100,100),你无法在子类{}里面调用基类的初始化函数的,要初始化一个带参数的基类,只能通过:的形式实现

#6


该回复于2012-05-23 08:32:54被版主删除

#7


这个叫初始化,在构造函数初始化成员的叫赋值

#8


初始化列表

#9


噢,仔细看了下,看名称你的类应该不是继承那个m_rect,这样的话那句语句只是初始化成员变量m_rect,对于成员变量你当然可以放在{}中去初始化,但它这么初始化的好处是少了一次默认初始化的动作,也就是说如果你在{}中调用初始化语句对m_rect赋值其实已经不是初始化了,而是覆盖,相当于会有两次初始化操作,一次是编译器默认无参初始化m_rect(),另一次是你手动初始化m_rect (0,0,100,100)然后赋值给m_rect。还有一种情况是m_rect根本不存在一个无参的构造函数,那样你只能在初始化列表中传递参数给它,而不能在{}中初始化,否则就会报错。记住,在你进入初始化函数执行其中的语句前,所有的成员变量都已经被默认初始化过一次了。“:”后面的语句列表就是你覆盖默认初始化函数的地方

#10


引用 2 楼  的回复:
初始化表,用来初始化的
++

#1


初始化m_rect

#2


初始化表,用来初始化的

#3


这是一种什么形式呢?就是对出现在函数名后面的“:m_rect() ”这一部分不是很理解,把他们放进{}里面行吗?

#4


初始化列表。。。

Item_base(const std::string &book = "",
                   double sales_price = 0.0):
                          isbn(book), price(sales_price) { }
         std::string book() const { return isbn; }

#5


引用 3 楼  的回复:
这是一种什么形式呢?就是对出现在函数名后面的“:m_rect() ”这一部分不是很理解,把他们放进{}里面行吗?

初始化Cex13aView的时候先初始化基类非默认构造函数m_rect (0,0,100,100),你无法在子类{}里面调用基类的初始化函数的,要初始化一个带参数的基类,只能通过:的形式实现

#6


该回复于2012-05-23 08:32:54被版主删除

#7


这个叫初始化,在构造函数初始化成员的叫赋值

#8


初始化列表

#9


噢,仔细看了下,看名称你的类应该不是继承那个m_rect,这样的话那句语句只是初始化成员变量m_rect,对于成员变量你当然可以放在{}中去初始化,但它这么初始化的好处是少了一次默认初始化的动作,也就是说如果你在{}中调用初始化语句对m_rect赋值其实已经不是初始化了,而是覆盖,相当于会有两次初始化操作,一次是编译器默认无参初始化m_rect(),另一次是你手动初始化m_rect (0,0,100,100)然后赋值给m_rect。还有一种情况是m_rect根本不存在一个无参的构造函数,那样你只能在初始化列表中传递参数给它,而不能在{}中初始化,否则就会报错。记住,在你进入初始化函数执行其中的语句前,所有的成员变量都已经被默认初始化过一次了。“:”后面的语句列表就是你覆盖默认初始化函数的地方

#10


引用 2 楼  的回复:
初始化表,用来初始化的
++