当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

<b>关于初始化C++类成员</b>[VC/C++编程]

赞助商链接



  本文“<b>关于初始化C++类成员</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在利用C++编程的历程当中,常常需求对类成员举行初始化,普通的办法有两种:

第一种办法:

CMYClass::CSomeClass()
{
  x=0;
  y=1;
}

第二种办法:

CSomeClass::CSomeClass() : x(0), y(1)
{
}

本文将要探究这两种办法的异同以及若何利用这两种办法.

从技术上说,第二种办法对比好,但是在大大都情形下,二者实际上没有什么辨别.第二种语法被称为成员初始化列表,之所以要利用这种语法有两个缘由:一个缘由是必须这么做,另一个缘由是出于效率考虑.

让我们先看一下第一个缘由——必要性.假想你有一个类成员,它本身是一个类大概构造,并且只有一个带一个参数的构造函数.

class CMember {
public:
  CMember(int x) { ... }
};

因为CMember有一个显式声明的构造函数,编译器不产生一个缺省构造函数(不带参数),所以没有一个整数就无法成立CMember的一个实例.

CMember* pm = new CMember;    // 出错!!
CMember* pm = new CMember(2);   // OK

假如CMember是另一个类的成员,你怎样初始化它呢?答案是你必须利用成员初始化列表.

class CMyClass {
  CMember m_member;
public:
  CMyClass();
};
// 必须利用初始化列表来初始化成员 m_member
CMyClass::CMyClass() : m_member(2)
{
•••
}

没有别的办法将参数传送给m_member,假如成员是一个常量对象大概引用也是一样.按照C++的法则,常量对象和引用不能被赋值,它们只能被初始化.

利用初始化列表的第二个缘由是出于效率考虑,当作员类具有一个缺省的构造函数和一个赋值操作符时.MFC的CString供应了一个完善的例子.假定你有一个类CMyClass具有一个CString范例的成员m_str,你想把它初始化为"Hi,how are you.".你有两种挑选:

CMyClass::CMyClass() {
// 利用赋值操作符
// CString::operator=(LPCTSTR);
m_str = _T("Hi,how are you.");
}
// 利用初始化列表
// 和构造函数 CString::CString(LPCTSTR)
CMyClass::CMyClass() : m_str(_T("Hi,how are you."))
{
}


  以上是“<b>关于初始化C++类成员</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .