构造函数初始化列表----主要为解决const变量的赋值而生

本文介绍C++中构造函数的使用方法及其初始化列表的重要性,尤其强调了初始化列表对于const成员变量赋值的独特作用,并通过一个具体的Student类实例演示了如何正确使用构造函数和初始化列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

形式为

类内定义    Student:m_name("jo"),age(10){...}

类外定义    Student::Student(string name,int age):m_name(name),m_age(age){...}

注意:1)可以同时给多个数据赋默认值,以 逗号 隔开;

      2)只能使用括号进行初始值赋值;

   3)最后大括号{}内可以加其他函数---即初始化列表只能用于构造函数,且必须先于构造函数执行;

      4)大括号{}结尾没有标点符号

 

 

===>为何需要初始化列表,而不是依靠构造函数来完成呢?

    --->初始化列表可以为const变量进行赋值,而构造函数不可。

  

使用示例:

class Student{
public:
  Student(string names="TTT",int ages=1000);    //赋默认值
  void setname(string name);
  void getAge();
private:
  string m_name;
  const int m_age;
};

Student::Student(string names,int ages):m_name(names),m_age(ages){   //更改name和age,其中age为const

                                       类型,但仍可更改,此即构造函数

                                        初始化列表的特殊用处;

  cout<<"default name"<<" "<<m_name<<endl;
  cout<<"default age"<<" "<<m_age<<endl;
}

void Student::setname(string name){
  m_name=name;
}

void Student::getAge(){
  cout<<m_age;
}

int main(){

  Student jo;                        //此时jo将为默认值m_name="TTT",m_age=1000;
  Student jo("Mary",9999);  //此时jo的name age 将同步更改;
  jo.setname("yoyo");
  return 0;
}

转载于:https://www.cnblogs.com/dart2100/p/8277809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值