亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于有參默認構造函數和初始化列表

#include<iostream>
#include<string>
using namespace std;

class Teacher{
?? ?public:
?? ??? ?Teacher(string m_strName = "Jim",int age = 1);
?? ??? ?void setName(string name);
?? ??? ?string getName();
?? ??? ?void setAge(int age);
?? ??? ?int getAge();
?? ?private:
?? ??? ?string m_strName;
?? ??? ?int m_iAge;
};

Teacher::Teacher(string name,int age):m_strName("anllla"),m_iAge(age)
{
?? ?cout << "the function is executed!" << endl;
}
void Teacher::setName(string name)
{
?? ?m_strName = name;
}
string Teacher::getName()
{
?? ?return m_strName;
}
void Teacher::setAge(int age)
{
?? ?m_iAge = age;
}
int Teacher::getAge()
{
?? ?return m_iAge;
}

int main()
{
?? ?Teacher t1;
?? ?
?? ?cout << t1.getName() << "," << t1.getAge() << endl;
?? ?
?? ?cout<<"after modifying:" << endl;
?? ?t1.setName("Lily");
?? ?t1.setAge(2);
?? ?
?? ?cout << t1.getName() << "," << t1.getAge() << endl;
?? ?
?? ?return 0;
}

老師,我為了驗證初始化列表是先于構造函數執行的,在初始化列表中又給了一個m_strName一個“anllla”的名字,但是第一次輸出的結果還是“anlla”

我的疑問是,當用初始化列表初始化了一個“anlla”之后,之后不是接著執行構造函數嗎?而構造函數中默認賦值是“Jim”,所以第一次輸出m_str_Name時不應該輸出后來覆蓋的那個“Jim”嗎?

正在回答

2 回答

一年前的今天? O(∩_∩)O哈哈~? ? ??

0 回復 有任何疑惑可以回復我~
Teacher::Teacher(string?name,int?age):m_strName("anllla"),m_iAge(age)
{
????cout?<<?"the?function?is?executed!"?<<?endl;
}
Teacher::Teacher(string?name,int?age):m_strName("anllla"),m_iAge(age)
{
????m_strName?=?"anllla";
????m_iAge?=?age;
????cout?<<?"the?function?is?executed!"?<<?endl;
}

這兩段是一樣的
0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之封裝篇(上)
  • 參與學習       103391    人
  • 解答問題       732    個

封裝--面向對象的基石,本教程力求幫助小伙伴們即學即會

進入課程

關于有參默認構造函數和初始化列表

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號