⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 son.cpp

📁 vc 编写的源代码!建议你们可以下载小看一下!
💻 CPP
字号:

#include "stdafx.h"
#include <typeinfo>
#include "son.h"
int Son::m_s=24;
Son::Son() //一定在冒号这里先调用了Father::Father(),生成子对象的“父类成员”
{//若父类没有写缺省con(),即Father(void),则报错!
	cout<<"Son default init"<<endl;
	m_a=100;//default m_a is that:Son.m_a,so "Son.m_a"=100;Son.Father::m_a=8;
	m_d=120;
  //p=new Father[10];
}
Son::Son(Son &son):Father(son)
{ //如果不写Father(son),则一定是强行调用了Father(),
  //那么this->Father::m_a!=son.Father::m_a;
 //总之,有继承时,各种con()一定要在::后跟相应的con()
	cout<<"the Son copy construct init"<<endl;
	this->m_a=son.m_a;//成员由this的类型决定,所以不是Father::m_a!!!
	this->m_d=son.m_d;
	this->m_s=son.m_s;

}
Son::~Son()//如果有诸如int *p的成员,则一定要写~Son()
{
	//如果有诸如int *p的成员,则一定要写 delete ([])p;
}
Son & Son::operator =(const Son &son)
{
	cout<<"the son function ="<<endl;

	if(this==&son)
	{
		return *this;
	}
	else
	{//有继承时,==函数一定要在此写下面第二条语句,不写,则this->Father::m_a!=son.Father::m_a;
	// 如果用单个的赋值,碰到是Father的private成员,就没办法了!
//	this->Father::m_a=son.Father::m_a;//错误!!碰到是Father的private成员,没办法
	//而且,只能这样写
	//Father::operator =(son); //正确!
		
		this->m_a=son.m_a;
		this->m_d=son.m_d;
		this->m_s=son.m_s;
		return *this;
	}
}

void Son::SetA(int FatherA,int SonA)
{ //间接调用父类的函数SetA,进入之后的this对成员没有多态,所以按this 的类型即父类型来确定
//成员,则比如为Father::m_a
	Father::SetA(FatherA);
	m_a=SonA;//与Father::SetA()中的m_a=区别
}
 void  Son::GetName()//virtual function override
 {
	cout<<"the son GetName()"<<endl;
 }
//reWrite  but parameter is not same as the father
void Son::func(float  count)
{
	cout<<"the son func(float cout)"<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -