默认构造函数(就是没有参数的构造函数)

The Default Constructor
The default constructor is the constructor used to create an object when you don't provide explicit initialization values. That is, it's the constructor used for declarations like this:
Stock stock1; // uses the default constructor
1、由编译器自动生成
2、由我们自己定义的
这里又有两种情况
上面说了啊,default constructor有两种(……your own default constructor. This is a constructor that takes no arguments):
1)One is to provide default values for all the arguments to the existing constructor:
Stock(const char * co = "Error", int n = 0, double pr = 0.0);
2)The second is to use function overloading to define a second constructor, one that has no arguments:
Stock();
有一点注意的时候两者不能同时使用:
You can have only one default constructor, so be sure that you don't do both. (With early versions of C++, you could use only the second method for creating a default constructor.)
This is a constructor that takes no arguments:这个指的是调用的时候不带参数。
编译器自动添加默认构造函数的条件:编译器实现的构造函数其实就是什么都不做
1.没有任何自己定义的构造函数(即便是复制构造函数也不行,如果自己定义复制构造函数,则必须自己定义构造函数)
2、数据成员中没有const和reference。--因为要初始化。
拷贝构造函数的参数必须是引用的原因:拷贝构造函数的参数使用引用类型不是为了减少一次内存拷贝, 而是避免拷贝构造函数无限制的递归下去。
如果是值的话,那在传值的时候还要再调一次拷贝构造函数
然后又要传值,又要再调一次....
然后你就内存不够,当了
关于赋值==函数和拷贝构造函数的区别:
#include<iostream>
using namespace std;
class A
{ public:
int i;
A( const A& a)
{ i=a.i;
cout<<"copy is build"<<endl;
}
explicit A(int y)
{ i=y;
}
};
A fun(A i)
{ A a1(i);
A a2=a1;//其实就调用拷贝构造函数
return a2;
}
int main()
{ A a(1);
fun(a);
}
拷贝构造函数一共调用四次拷贝构造函数。。fun参数传值一次,a1(i)一次,a2(a1)一次,return的时候构造临时对象一次
如果函数返回对象,而不是指针,那么在执行return的时候,会使用被return的对象“复制构造”临时对象,然后,return语句执行完毕(遇到分号;了)函数内部创建的全部变量析构、出栈。而被“赋值构造”的临时对象则在调用该函数的语句执行完毕(遇到分号;或者右边的大括号})后,析构。
总结一句:
临时变量的生存范围是语句级——分号;结束或者右边的大括号}结束。语句结束之后,临时变量就被析构了~
以上就是小编为大家带来的浅谈c++构造函数问题,初始化和赋值问题全部内容了,希望大家多多支持~
# c
# 构造函数初始化
# [c++]变量声明与定义的规则详解
# c/c++中struct定义、声明、对齐方式解析
# 深入分析C++中声明与定义的区别
# c/c++中变量的声明和定义深入解析
# 基于C++全局变量的声明与定义的详解
# C++ 结构体初始化与赋值详解
# 解决C++全局变量只能初始化不能赋值的问题
# C++中声明、定义、初始化、赋值区别介绍
# 又要
# 递归
# 你就
# 一句
# 说了
# 没有任何
# 两种
# 又有
# 有两种
# 不带
# 指的是
# 则在
# 浅谈
# 当了
# 小编
# 什么都不
# 自动生成
# 要再
# 大家多多
# 结束之后
相关文章:
如何用腾讯建站主机快速创建免费网站?
MySQL查询结果复制到新表的方法(更新、插入)
如何安全更换建站之星模板并保留数据?
开源网站制作软件,开源网站什么意思?
简单实现Android文件上传
如何撰写建站申请书?关键要点有哪些?
建站OpenVZ教程与优化策略:配置指南与性能提升
一键网站制作软件,义乌购一件代发流程?
如何制作网站标识牌,动态网站如何制作(教程)?
如何挑选最适合建站的高性能VPS主机?
郑州企业网站制作公司,郑州招聘网站有哪些?
如何挑选高效建站主机与优质域名?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
,网页ppt怎么弄成自己的ppt?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
网站制作话术技巧,网站推广做的好怎么话术?
如何通过老薛主机一键快速建站?
如何快速搭建高效WAP手机网站?
ppt制作免费网站有哪些,ppt模板免费下载网站?
孙琪峥织梦建站教程如何优化数据库安全?
建站之星如何通过成品分离优化网站效率?
Python路径拼接规范_跨平台处理说明【指导】
重庆市网站制作公司,重庆招聘网站哪个好?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
建站主机数据库如何配置才能提升网站性能?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
制作门户网站的参考文献在哪,小说网站怎么建立?
如何快速生成可下载的建站源码工具?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
建站之星免费模板:自助建站系统与智能响应式一键生成
建站之星如何快速解决建站难题?
如何通过免费商城建站系统源码自定义网站主题与功能?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
制作网站外包平台,自动化接单网站有哪些?
常州自助建站工具推荐:低成本搭建与模板选择技巧
广州美橙建站如何快速搭建多端合一网站?
建站主机是否等同于虚拟主机?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
如何快速启动建站代理加盟业务?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
临沂网站制作企业,临沂第三中学官方网站?
内网网站制作软件,内网的网站如何发布到外网?
如何通过远程VPS快速搭建个人网站?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何获取上海专业网站定制建站电话?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
*请认真填写需求信息,我们会在24小时内与您取得联系。