初始化列表的好处

  • 高效
  • 解决变量二义性的问题: 到底是把形参赋值给成员变量,还是把成员变量赋值给形参,容易把人搞晕
  • 解决const类型成员变量首次赋值的问题:我们知道const常量,只能初始化一次,注意构造函数的代码块中是不能对const成员初始化的,会报错
#include <iostream>

class Girl
{
public:
    Girl()
    :name("lucy"),age(18)
    {
        std::cout<<"我是构造器,我是第一个被执行"<<std::endl;
    };
    char *getName(){
        return name;
    }
    int getAge(){
        return age;
    }
private:
    char name[20];
    int age;
};

int main(int argc, char const *argv[])
{
    /* code */
    Girl girl; //栈内存中实例化
    std::cout << girl.getName() << std::endl;
    std::cout << girl.getAge() << std::endl;
    return 0;
}

/*
我是构造器,我是第一个被执行
lucy
18
*/
#include <iostream>

class Girl
{
public:
    Girl(std::string name, int age)
    :name(name),age(age)
    {
        std::cout<<"我是构造器,我是第一个被执行"<<std::endl;
    };
    std::string getName(){
        return name;
    }
    int getAge(){
        return age;
    }
private:
    std::string name;
    int age;
};

int main(int argc, char const *argv[])
{
    /* code */
    Girl girl("Lucy",20); //栈内存中实例化
    std::cout << girl.getName() << std::endl;
    std::cout << girl.getAge() << std::endl;
    return 0;
}

/*
我是构造器,我是第一个被执行
Lucy
20
*/

results matching ""

    No results matching ""