构造函数初始化以及拷贝构造函数常见错误,默认初始化const类成员会报错!要用列表初始化!!!!

时间:2022-04-16 19:39:29
#include<iostream>
#include<string>
using namespace std;

class Teacher
{
 public:
   Teacher(string name="Jam",int age=1,int m=1000):m_strName(name),m_iAge(age),m_iMax(m) 
//注意这里没分号,列表初始化赋值不能用=号,用() { cout<<" Teacher列表初始化"<<endl; }   Teacher(const Teacher &tea):m_iMax(1000)
//这里是定义拷贝构造函数,格式必须是const、本类、以及引用!
//如果不定义拷贝构造函数,系统默认定义!!
//而且这里要注意一定要列表初始化const常量m_iMax,不然会报错!!
//因为拷贝构造函数只是简单的复制,而m_iMax是不能被二次赋值的!
   {
     cout<<"这里是拷贝构造函数"<<endl;
   }
string getName() { return m_strName; } int getAge() { return m_iAge; } int getMax() { return m_iMax; } private: string m_strName; int m_iAge; const int m_iMax;//当类成员是常量,const修饰,则不能用默认初始化,用列 表初始化!! }; //注意分号 int main() { Teacher t; cout<<t.getName()<<" "<<t.getAge()<<" "<<t.getMax()<<endl; }