類的陣列初始化後會呼叫拷貝建構函式
在初始化類的物件時,只有在類的陣列物件初始化時才會呼叫拷貝建構函式?,並且當我把類的陣列物件初始化時的字串string的"張三"去掉時,就不會呼叫。
我用VS2010除錯時,發現初始化的成員會在呼叫完自身的建構函式後會直接呼叫拷貝建構函式。
#include <iostream>
#include<string>
using namespace std;
class Student
{
private:
int MathScore,CScore,EnglishScore;
public:
long stuNo;
string stuName;
char stuSex;
void setScore(int mathScore,int cScore,int englishScore)
{
MathScore=mathScore;
CScore=cScore;
EnglishScore=englishScore;
}
void display();
Student(string stuname)
{stuNo=122301002;stuName=stuname;stuSex='F';}
Student(long stuno)
{stuNo=stuno;stuName="張三";stuSex='F';}
Student(long stuno, string name)
{
stuNo=stuno;stuName=name;stuSex='F';
}
Student(long stuno, string name,char sex)
{stuNo=stuno;stuName="123";stuSex=sex;}
Student(const Student &s)
{
cout<<"拷貝建構函式的呼叫" ;
stuNo=s.stuNo;
stuName=s.stuName;
stuSex=s.stuSex;
MathScore=s.MathScore;
CScore=s.CScore;
EnglishScore=s.EnglishScore;
}
};
void Student::display(){
cout<<"學生資訊如下:"<<endl;
cout<<"學號:"<<"\t\t姓名:"<<"\t性別:"<<"\t數學:"<<"\tC語言:"<<"\t英語:"<<endl;
cout<<stuNo<<"\t"<<stuName<<"\t"<<stuSex<<"\t"<<MathScore<<"\t"<<CScore<<"\t"<<EnglishScore<<endl;
}
int main(void)
{ cout<<"測試1";
Student stu[4]={ Student("張三"),Student(122301002),Student(122302003,"趙五"),Student(122302004,"李四",'F')};
cout<<"測試2";
stu[0].setScore(80,87,56);
stu[1].setScore(81,84,58);
stu[2].setScore(80,90,53);
stu[3].setScore(80,82,55);
for (int i=0;i<4;i++)
{
stu[i].display();
}
Student stus("張三");
stus.display();
return 0;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007877/viewspace-2839424/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 拷貝建構函式函式
- C++拷貝建構函式(深拷貝,淺拷貝)C++函式
- 拷貝建構函式的作用函式
- 建構函式,拷貝賦值函式的N種呼叫情況函式賦值
- C++語言之結構體、類、建構函式、拷貝建構函式C++結構體函式
- 拷貝建構函式中的陷阱函式
- 拷貝建構函式(比較全的)函式
- C++拷貝建構函式詳解C++函式
- C++ 拷貝建構函式詳解C++函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- C++複製控制:拷貝建構函式C++函式
- js 陣列的淺拷貝和深拷貝JS陣列
- c/c++ 拷貝控制 建構函式的問題C++函式
- C++/CLI思辨錄之拷貝建構函式C++函式
- java陣列拷貝的方法Java陣列
- 陣列和物件的拷貝陣列物件
- C++:建構函式的分類和呼叫C++函式
- C++的一點基本自我修養(二)--拷貝建構函式C++函式
- C++之Big Three:拷貝構造、拷貝賦值、解構函式探究C++賦值函式
- C++ 類中呼叫基類帶引數建構函式以及常量如何初始化C++函式
- 14 個拷貝陣列的 JS 技巧陣列JS
- 類的建構函式和解構函式函式
- C++知識點49——類繼承與類的構造、拷貝、operator=和解構函式C++繼承函式
- C++中建構函式後的初始化列表C++函式
- js 陣列深度拷貝詳解JS陣列
- js陣列物件複製拷貝不改變原來的值,深拷貝JS陣列物件
- 建構函式之間的呼叫函式
- C++ 類建構函式初始化列表介紹C++函式
- c# tcbs之建構函式呼叫建構函式示例C#函式
- 如何深淺拷貝陣列(總結)陣列
- 【C++】初始化列表建構函式VS普通建構函式C++函式
- C++派生類的拷貝構造C++
- Java的預設建構函式呼叫Java函式
- C++ 類建構函式和解構函式C++函式
- [C++]顯示呼叫建構函式和解構函式C++函式
- 深入理解 JavaScript 物件和陣列拷貝JavaScript物件陣列
- js如何實現拷貝一個陣列JS陣列
- 在 C++ 中子類繼承和呼叫父類的建構函式方法C++繼承函式