mysql视频 Ubuntu Markdown编辑器 namespace Netty pdf curl sed merge uiwebview vue官方下载 vue案例 广告投放系统源码 jquery的点击事件 jq去空格 list获取最后一个元素 coreldraw学习 a标签去除下划线 office配置进度 wordpress本地建站 cmd清空命令 小程序下拉刷新样式 安装python pythoninput python或运算 java中scanner java编程学习 java怎么配置 java文件删除 php实例 javascript案例 修改mac地址软件 ILspy 刷机工具下载 js绝对值 python封装 电视免费软件 快捷精灵 微信彩色字 html5下载
当前位置: 首页 > 学习教程  > 编程语言

浅谈C++构造函数

2020/7/24 11:21:04 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

浅谈C++构造函数

构造函数的本意是在创建对象的时候初始化对象,编译器会根据传递的实参来匹配不同的(重载的)构造函数,有以下几种构造函数:

//复数类
class Complex{
public:
    Complex(): m_real(0.0), m_imag(0.0){ }
    Complex(double real, double imag): m_real(real), m_imag(imag){ }
     Complex(double real): m_real(real), m_imag(0.0){ } 
     Complex(const Complex &c)
     {this->m_real = c.m_real;
		this->m_imag = c.m_imag;
	}
	
public:
	void func(void); 
  	void display(void);
private:
    double m_real;  //实部
    double m_imag;  //虚部
};
  1. 默认构造函数。就是编译器自动生成的构造函数。以 Complex 类为例,它的原型为:
    Complex(); //没有参数

  2. 普通构造函数。就是用户自定义的构造函数。以 Complex 类为例,它的原型为:
    Complex(double real, double imag); //两个参数

  3. 拷贝构造函数。在以拷贝的方式初始化对象时调用。以 Complex 类为例,它的原型为:
    Complex(const Complex &c);

  4. 转换构造函数。将其它类型转换为当前类类型时调用。以 Complex 为例,它的原型为:
    Complex(double real);

不管哪一种构造函数,都能够用来初始化对象,这是构造函数的本意。
假设 Complex 类定义了以上所有的构造函数,那么下面创建对象的方式都是正确的:
纯文本复制

Complex c1();  //调用Complex()
Complex c2(10, 20);  //调用Complex(double real, double imag)
Complex c3(c2);  //调用Complex(const Complex &c)
Complex c4(25.7);  //调用Complex(double real)

这些代码都体现了构造函数的本意——在创建对象时初始化对象。

除了在创建对象时初始化对象,其他情况下也会调用构造函数,例如,以拷贝的的方式初始化对象时会调用拷贝构造函数,将其它类型转换为当前类类型时会调用转换构造函数{Complex a(10.0, 20.0); a= 255.5}。这些在其他情况下调用的构造函数,就成了特殊的构造函数了。特殊的构造函数并不一定能体现出构造函数的本意。


本文链接: http://www.dtmao.cc/news_show_50396.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?