美文网首页
c++初始化列表

c++初始化列表

作者: arkliu | 来源:发表于2022-11-21 08:37 被阅读0次

    初始化列表的语法

    类名(形参列表):成员一(值一),成员二(值二),...成员n(值n)
    

    初始化列表

    • 如果成员已经在初始化列表中,则不应该在构造函数中再次赋值
    • 初始化列表和赋值有本质区别,如果成员是类,使用初始化列表调用的是成员类的拷贝构造函数,而赋值则是先创建成员类对象,然后在赋值。
    • 初始化列表的括号中可以是具体的值,也可以是构造函数的形参名,还可以是表达式
    • 如果成员是常量或者引用, 必须使用初始化列表,因为常量和引用只能在定义的时候,初始化。
    • 如果成员是没有默认构造函数的类,则必须使用初始化列表
    #include <iostream>
    #include<string>
    using namespace std;
    
    class Person{
        public:
            string m_name;
            int    m_age;
            //使用初始化列表初始化成员
            Person():m_name("张三"),m_age(23) {
                cout <<"调用了Person()默认构造函数"<<endl;
            }
            //使用初始化列表初始化成员
            Person(string name, int age):m_name(name),m_age(age) {
                cout <<"调用了Person()有参构造函数"<<endl;
            }
            //拷贝构造函数
            Person(const Person& refPer) {
                this->m_name = refPer.m_name;
                this->m_age = refPer.m_age;
                cout <<"调用了Person()拷贝构造函数"<<endl;
            }
    
            ~Person() {
                cout <<"调用了~Person()析构函数"<<endl;
            }
            void show() {
                cout <<" 姓名:"<<m_name<<"  年龄:"<<m_age <<endl;
            }
    };
    
    int main() {
        Person per;
        per.show();
    
        Person per2("李四", 30);
        per2.show();
        return 0;   
    }
    
    
    
    
    image.png

    相关文章

      网友评论

          本文标题:c++初始化列表

          本文链接:https://www.haomeiwen.com/subject/syujtdtx.html