類的陣列初始化後會呼叫拷貝建構函式
在初始化類的物件時,只有在類的陣列物件初始化時才會呼叫拷貝建構函式?,並且當我把類的陣列物件初始化時的字串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++函式
- js 陣列的淺拷貝和深拷貝JS陣列
- C++:建構函式的分類和呼叫C++函式
- C++之Big Three:拷貝構造、拷貝賦值、解構函式探究C++賦值函式
- 類的建構函式和解構函式函式
- 14 個拷貝陣列的 JS 技巧陣列JS
- C++知識點49——類繼承與類的構造、拷貝、operator=和解構函式C++繼承函式
- js 陣列深度拷貝詳解JS陣列
- 建構函式之間的呼叫函式
- C++ 類建構函式初始化列表介紹C++函式
- js陣列物件複製拷貝不改變原來的值,深拷貝JS陣列物件
- 【C++】初始化列表建構函式VS普通建構函式C++函式
- 如何深淺拷貝陣列(總結)陣列
- C++派生類的拷貝構造C++
- 類的解構函式自動呼叫函式
- 建構函式和類函式
- 深入理解 JavaScript 物件和陣列拷貝JavaScript物件陣列
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- JS 建構函式與類JS函式
- JS-陣列、函式、類與物件JS陣列函式物件
- 19-父類的建構函式函式
- flutter-dart 類的建構函式FlutterDart函式
- JavaScript中十個一步拷貝陣列的方法JavaScript陣列
- JavaScript中十種一步拷貝陣列的方法JavaScript陣列
- C++——建構函式之初始化列表C++函式
- 父類和子類的建構函式問題函式
- 你不知道的簡單陣列拷貝方法全解陣列
- 你不知道的JavaScript--Item8 函式,方法,建構函式呼叫JavaScript函式
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- Python 類的建構函式中初始化日誌記錄器後,導致日誌被重複列印Python函式
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- C# 建構函式 (初始化成員變數的角色)C#函式變數
- dart系列之:dart類中的建構函式Dart函式
- static程式碼塊、構造程式碼塊、建構函式以及Java類初始化順序C程式函式Java