首先,运行下图中的C++代码,输出是什么?
复制代码 代码如下:
class A
{
private:
int n1;
int n2;
public:
A(): n2(0) , n1(n2 + 2)
{
}
void Print()
{
cout<<"n1:"<<n1<<",n2:"<<n2<<endl;
}
};
int main(void)
{
A a;
a.Print();
return 0;
}
答案:
输出n1是一个随机的数字,n2为0。在C++中,成员变量的初始化顺序与变量在类型中的声明顺序相同,而与它们在构造函数的初始化列表中的顺序无关。因此在这道题中,会首先初始化n1,而初始n1的参数n2还没有初始化,是一个随机值,因此n1就是一个随机值。初始化n2时,根据参数0对其初始化,故n2=0。
构造函数的初始化列表仅仅指定用于初始化成员的值,并不指定这些初始化执行的次序。成员初始化的次序就是定义成员的次序,第一个成员首先被初始化,然后是第二个,依次类推。也就是说,C++编译器很容易得到构造函数的参数列表,获取参数,然后根据成员变量的声明顺序初始化成员变量(这是因为,后声明的变量有可能依赖先声明的成员变量,因此要有先声明先初始化,后声明的后初始化)。
大家可能看到这里就会觉得,好麻烦啊,当类中的一个数据成员是根据其他数据成员而初始化的时候,初始化列表的次序不能跟成员变量的声明次序不一致,否则会出现不可预料的错误。
的确是这样的,所以有人就会想到,我干脆把初始化列表的那些操作都放到构造函数的函数体内对数据成员进行赋值操作就行了,的确这样做是可以的,但是有时构造函数的初始化列表是必须的。
有些数据成员必须在构造函数初始化列表中进行初始化。对于这样的成员,在构造函数体内对它们赋值是不起作用的。没有默认构造函数的类类型的成员,以及const类型的成员变量和引用类型的成员变量,不管是哪种类型,都必须在构造函数初始化列表中进行初始化。
例如,下面的构造函数定义就是错误的:
复制代码 代码如下:
class A
{
private:
int i;
const int j;
int &k;
public:
A(int ii)
{
i = ii;
j = ii;
k = ii;
}
};
记住,可以初始化 const 对象或引用类型的对象,但不能对它们赋值。在开始执行构造函数的函数体之前,要完成初始化,初始化 const 或引用类型的数据成员的唯一机会就是在构造函数的初始化列表中。
例如,下面的构造函数定义就是正确的:
复制代码 代码如下:
class A
{
private:
int i;
const int j;
int &k;
public:
A(int ii) : i(ii) , j(i) , k(ii)
{
}
A() : j(0) , k(i)
{ }
};
int main(void)
{
A a;
return 0;
}
相关推荐:
ChatGPT充值打不开?这几招教你轻松解决问题!,免费的ai写作绘图
AI一键生成文章网页版,让内容创作更简单高效
seo自己做什么,自己做seo需要花钱吗 ,ai850775
如何识别文章是否由AI写作:技巧与方法解析
AI公众号文章生成,轻松打造爆款内容
ChatGPT为什么访问不了了?了解背后的原因与解决方法,AI怎么拖入路径
内容创作新时代:自动生成文章的AI如何改变写作生态
GoogleGPT-引领未来智能对话的革命,灵境ai画质
ChatGPT中显示已进行一处编辑,但看不到内容?你需要了解的隐藏问题!,ai敲
SEO用户:如何为您的网站带来持续流量和转化,惠州网站推广哪个好
GPT-3.5网页版:让你与人工智能零距离接触,ai英语学
seo软件工具,seo软件是什么 ,AI妆容
ChatGPT当前不可用?如何应对AI服务中断的挑战,ai文章免费写作app
ChatGPT在处理文本时可能无法完全理解上下文的复杂性,肌肉ai
文章创作AI:引领智能写作的新时代
SEO导流:如何通过精准优化实现网站流量大爆发,网站优化优化怎么做
SEO优化关键词品牌:如何通过精准的关键词提升品牌价值,ai免费智能写作论文
ChatGPT怎么打不开了?揭秘背后的原因与解决方法,ai中打开ai文件丢失
为什么做酒店seo,为什么做酒店 ,ai uehara下载
优化型网站:提升企业竞争力的必备利器,重庆网站推广工作如何
ChatGPT+维护页面:您的智能助手之旅,安全、高效、无忧,奥特曼画图ai
SEO特点与实施策略:提升网站流量与排名的关键,定西抖音seo价格查询
如何通过AI写文章,轻松提高写作效率与质量
打造内容创作新时代:有言AI生成助力创作者释放灵感
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
智能AI写作生成:如何借助人工智能提升创作效率与质量
SEO汇报:如何通过数据分析提升网站排名,助力企业业绩增长,免费推广网站大全百度经验
ChatGPT维护页面-背后的技术与用户体验,ai领域ppt
seo需要学习什么语言,做seo需要懂什么技术 ,ai软件制作教程
SEO优化知识全解析:提升网站排名的秘密武器,ai出错合集
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
自动AI写文章:轻松创作时代的全新利器
AI一键生成文章,写作新境界
SEO查:如何用精准的SEO诊断助力网站流量爆发,美团关键词排名怎么补
求一个AI软件,彻底改变你的工作与生活!
ChatGPT打不开实时问题解决方案:让你的AI助手始终在线,psd 转ai
用AI写文章,释放你的创作潜力!
什么是seo概念,什么是seo,sem ,ai音标谐音
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
为什么选择收录网站是企业在线营销的必备策略,全网营销与推广
SEO在广告领域的深度解析:如何利用SEO提升广告效果,网文写作ai工具
SEO优化10种策略:提升网站排名的有效方法,帅气ai男头白底
GPT-3.5可以免费使用吗?AI未来的无限可能,ai烧猪
360优化关键词-提升网站流量与排名的秘密武器,美拍ai
什么是seo网站推广,什么是seo网站推广 ,ai酷男人
SEO收费如何选择合适的SEO服务,提升网站排名并增加曝光度,做网站优化哪家实惠
chatai写作免费一键生成,轻松解决写作难题!,陈逗逗ai换脸在线看
SEO与SEM策略:提升网站流量与品牌曝光的双剑合璧,ai补图