• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 浅谈c++构造函数问题,初始化和赋值问题

浅谈c++构造函数问题,初始化和赋值问题

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了浅谈构造柱泵,浅谈二次构造柱泵,浅谈,浅谈小学语文阅读教学,浅谈如何转化后进生等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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);
 

}
</div>

 拷贝构造函数一共调用四次拷贝构造函数。。fun参数传值一次,a1(i)一次,a2(a1)一次,return的时候构造临时对象一次

如果函数返回对象,而不是指针,那么在执行return的时候,会使用被return的对象“复制构造”临时对象,然后,return语句执行完毕(遇到分号;了)函数内部创建的全部变量析构、出栈。而被“赋值构造”的临时对象则在调用该函数的语句执行完毕(遇到分号;或者右边的大括号})后,析构。

总结一句:

临时变量的生存范围是语句级——分号;结束或者右边的大括号}结束。语句结束之后,临时变量就被析构了~

以上就是小编为大家带来的浅谈c++构造函数问题,初始化和赋值问题全部内容了,希望大家多多支持~

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅谈c++构造函数问题,初始化和赋值问题
  • 浅谈C++中的构造函数分类及调用规则

相关文章

  • 2017-05-28C++获取当前系统时间的方法总结
  • 2017-05-28Visual C++中Tab View的多种实现方法
  • 2017-05-28二叉搜索树的插入与删除(详细解析)
  • 2017-05-28深入理解结构体中占位符的用法
  • 2017-05-28Cocos2d-x中获取系统时间和随机数实例
  • 2017-05-28C++ 关键字 inline详细介绍
  • 2017-05-28C++运算符重载规则详解
  • 2017-05-28从汇编看c++中变量类型的深入分析
  • 2017-05-28数据结构课程设计- 解析最少换车次数的问题详解
  • 2017-05-28C++破坏MBR的代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Hdu 6162 Ch’s gift【思维+树链剖分+线段树】
    • C++中指针和引用的区别详解
    • C++ 中的Lambda表达式写法
    • C++的sstream标准库详细介绍
    • C++编写简易的飞机大战
    • 深入理解char *a与char a[]的区别
    • CFile与CStdioFile的文件读写使用方法详解
    • 使用C语言实现最小生成树求解的简单方法
    • C#委托所蕴含的函数指针概念详细解析
    • C++实现查找二叉树中和为某一值的所有路径的示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有