C++派生類的建構函式和複製控制
阿新 • • 發佈:2019-02-03
派生類的建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員,像任何類一樣,如果類沒有定義自己的建構函式和複製控制成員,編譯器自動合成。
1.建構函式
派生類的建構函式先要初始化基類的成員,然後初始化本類的成員
下面定義一個Father類,標頭檔案如下:
#if !defined(AFX_FATHER_H__C5B84CD6_0B79_4806_BEDA_035EB4183F8B__INCLUDED_) #define AFX_FATHER_H__C5B84CD6_0B79_4806_BEDA_035EB4183F8B__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include <string> class Father { public: Father(); Father(std::string job,std::string address); virtual ~Father(); virtual void sayHello(); std::string job; std::string address; }; #endif // !defined(AFX_FATHER_H__C5B84CD6_0B79_4806_BEDA_035EB4183F8B__INCLUDED_)
原始檔如下:
#include "Father.h"
#include<iostream>
Father::Father()
{
}
Father::Father(std::string job,std::string address)
{
this->job=job;
this->address=address;
}
Father::~Father()
{
}
void Father::sayHello()
{
std::cout<<"Hello"<<std::endl;
}
下面寫一個Son類使用public繼承Father,那麼,Son類的建構函式可以如下寫
Son::Son(std::string job,std::string address,std::string pcname,std::string phonename):Father(job,address)
{
this->pcname=pcname;
this->phonename=phonename;
}
首先呼叫基類的建構函式,初始化基類的成員。
2.複製建構函式
Son::Son(const Son& ss):Father(ss) { this->pcname=ss.pcname; this->phonename=ss.phonename; }
先呼叫基類的複製建構函式,初始化基類的成員,然後初始化本類的成員
3.賦值操作符
Son& Son::operator =(Son& ss)
{
Father::operator=(ss);
this->pcname=ss.pcname;
this->phonename=ss.phonename;
return *this;
}
顯式呼叫基類的賦值操作符。