构造函数和拷贝构造函数初始化成员变量

前提: 定义了一个class mycode,在里面定义了两个private成员变量 ma,mb。可以通过两个const成员函数查看对象中的ma和mb值。

#include<iostream>
#include<string>
using namespace std;
class mycode{
public:
    ......
    const int get_ma() const { return ma; }
    const string get_mb() const { return mb; }
private:
    int ma;
    string mb;
}
int main(){
    mycode person;
    cout<<person.get_ma()<<" "<<person.get_mb()<<endl;
}

一、无参构造函数

方法1:在函数体内部初始化

mycode() {
	ma = 10;
	mb = "abc";
}

方法2:初始化列表初始化成员变量

mycode() :ma(10), mb("abc") {}

 二、有参构造函数

方法1:在函数体内部初始化

mycode(int a,string b) {
	ma = a;
	mb = b;
}

 方法2:初始化列表初始化成员变量

person(int a,int b,int c):m_a(a),m_b(b),m_c(c){};

 三、带默认值的有参构造函数

带默认值的有参构造函数=无参构造函数+有参构造函数

方法1:在函数体内部初始化

mycode(int a=10,string b="abc") {
	ma = a;
	mb = b;
}

方法2:初始化列表初始化成员函数 

mycode(int a=10,string b="abc") :ma(a), mb(b) {}

 主函数有三种构建对象方法

person s;//s.ma为10,s.mb值为“abc”
person s(20)//s.ma值为20,s.mb值为“abc”
person s(40,“abc”);//s.ma值为40,s.mb值为“abc”

四、拷贝构造函数

方法1:在函数体内部初始化

mycode(const mycode& p) {
	ma = p.ma;
	mb = p.mb;
}

方法2:初始化列表初始化成员变量

mycode(const mycode& p) :ma(p.ma), mb(p.mb) {}

 小tip:

  • 带默认值的有参构造函数=无参构造函数+有参构造函数
  • 初始化列表中,成员变量赋值的顺序与类中成员变量申明的顺序一致
  • 初始化列表中生成的代码会插入到函数体内部前面
  • 可以查看C++学习之路-构造函数的初始化列表获得更多细节信息

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值