前提: 定义了一个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++学习之路-构造函数的初始化列表获得更多细节信息