构造函数详细介绍

构造函数基本概念
  1. 名字和类名相同,可以有参数,不能有返回值
  2. 作用是对对象进行初始化,如给成员变量赋值
  3. 如果定义类时,没有写构造函数,则编译器生成一个无参的构造函数,不进行任何操作
  4. 如果用户自己定义了构造函数,则编译器不再生成构造函数
  5. 对象生成时构造函数被调用,对象一旦生成,就再也不在其上执行构造函数了
  6. 一个类可以有多个构造函数
    重要:有时对象没有构造函数 被初始化就被使用会导致程序出错
调用默认构造函数

示例:

class Complex{
   
	private:
		double real, imag;
	public:
		void Set(double r, double i);
};
Complex c1; // 默认构造函数被调用
Complex *pc = new Complex;//默认构造函数被调用
调用用户自定义构造函数
class Complex{
   
	private:
		double real, imag;
	public:
		Complex (double r, double i=0);
}
Compelex::Complex(double r, double i){
   
	real = r;
	image = i;
}
Complex c1;   //error 缺少构造参数
Complex *pc = new Complex; // error,没有参数
Complex c1(2); //ok
Conplex c1(2, 4), c2(3,5); 
Complex *pc = new Complex(3, 4);

不难看出,当用户定义了自定义构造函数的时候初始化就必须按照用户定义的构造函数来,否则就会报错

可以有多个构造函数,参数个数或类型不同
class Complex{
   
	private:
		double read, imag;
	public:
		void Set(double r, double i);
		Complex(double r, double i);
		Complex(double r);
		Complex(Complex c1, Complex c2);
};
Complex::Complex(double r, double i){
   
	real 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值