美文网首页
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++初始化列表

    引言 用c++的人都知道,c++的构造函数具有初始化列表,初始化列表有什么作用?什么情况下必须使用初始化列表...

  • [C++之旅] 11 初始化列表

    [C++之旅] 11 初始化列表 初始化列表的特性 初始化列表先于构造函数执行 初始化列表只能用于构造函数 初始化...

  • C++的初始化列表和列表初始化

    C++的初始化列表和列表初始化 初始化列表 初始化列表是声明在构造函数中来实现的,相当于初始化,而不是复制操作 初...

  • C++初始化列表

    本文主要说明成员初始化列表的注意事项。 I、上帝视角看初始化列表 构造函数可以有两种构造形式,一是在构造函数体内对...

  • c++ 初始化列表

    初始化列表可以改变private里const 的值

  • C++之初始化列表

    问题 类中是否可以定义 const 成员? 编译结果: 代表类中可以定义const成员变量, 但是面临的问题是: ...

  • C++初始化列表 多态

    初始化列表 特点 一种便捷的初始化成员变量的方式 只能在构造函数中 初始化列表与默认参数配合使用 如果函数的声明和...

  • 成员初始化列表

    C++为类中提供类成员的初始化列表 类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数...

  • 001 列表初始化

    列表初始化 C++ 语言定义了初始化的好几种不同形式,这也是初始化问题复杂性的一个体现。例如,要想定义一个名为 u...

  • C++中的初始化列表

    类成员的初始化 首先来看一段代码: 请问上述代码可以执行么?答案是不可以,因为在Test类初始化时必须明确的初始化...

网友评论

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

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