C++概念和特性

1、创建C++项目

直接上图,按图新建项目

注意:如果不点下一步,而是直接点完成,则会新建一个默认项目。

2、理解面向对象编程方法

     

       面向对象编程(OOP)是为真实世界创建软件模型的全新方法,它以一种独特的方式设计程序。OOP有几个核心概念:如类、对象、继承和多态。

      继承、重载和覆盖

实例

// InheritanceTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream"

using namespace std;

//基类:人
class CPerson
{
public:
	CPerson(int iAge,char* sName)
	{
		this->iAge = iAge;
		strcpy_s(this->sName,32, sName);
	}
	virtual char* WhoAmI()
	{
		return "I am a person";
	}
private:
	int iAge;
	char sName[32];

};
 
//工人
class CWorker:public CPerson
{
public:
	CWorker(int iAge, char* sName, char* sEmploymentStatus) :CPerson(iAge,sName)
	{
		strcpy_s(this->sEmploymentStatus, 32, sEmploymentStatus);
	}
	virtual char* WhoAmI()
	{
		return "I am a worker";
	}
private:
	 
	char sEmploymentStatus[32];

};

//学生
class Cstudent:public CPerson
{
public:
	Cstudent(int iAge, char* sName, char* sStudentIdentityCard) :CPerson(iAge, sName)
	{
		strcpy_s(this->sStudentIdentityCard, 32, sStudentIdentityCard);
	}
	virtual char* WhoAmI()
	{
		return "I am a student";
	}
private:

	char sStudentIdentityCard[32];

};
 


int _tmain(int argc, _TCHAR* argv[])
{
	CPerson cPerson(10, "John");
	cout << cPerson.WhoAmI() << endl;

	CWorker cWorker(35, "Mary", "on wacation");
	cout << cWorker.WhoAmI() << endl;

	Cstudent cStudent(22, "Sandra", "Phisician");
	cout << cStudent.WhoAmI() << endl;

	system("pause");
	return 0;
}

      多态

利用多态性(Polymorphism)特性,可以通过基类的指针或引用访问派生类的对象,执行派生类中实现的操作。

实例:

// PPolymorphismTest.cpp : 定义控制台应用程序的入口点。
//
/*
创建一个新的默认控制台应用程序,名为PolymorphismTest
*/

#include "stdafx.h"
#include "iostream"
#define M_PI 3.1415926
using namespace std;

//图形
class CFigure
{
public:
	virtual char* FigureType() = 0;
	virtual double Circumference() = 0;
	virtual double Area() = 0;
	virtual ~CFigure(){ }
};

//三角形
class CTriangle:public CFigure
{
public:
	CTriangle()
	{
		a = b = c = 0;
	}
	CTriangle(double a, double b, double c) :a(a), b(b), c(c){ }
	virtual char* FigureType()
	{
		return "Triangle";
	}
	virtual double Circumference()
	{
		return a + b + c;
	}
	virtual double Area()
	{
		double S = Circumference() / 2;
		return sqrt(S*(S - a)*(S - b)*(S - c));
	}
private:
	double a, b, c;
};

//矩形
class CSquare :public CFigure
{
public:
	CSquare()
	{
		a = b = 0;
	}
	CSquare(double a, double b) :a(a), b(b){ }
	virtual char* FigureType()
	{
		return "Square";
	}
	virtual double Circumference()
	{
		return 2*a + 2*b;
	}
	virtual double Area()
	{
		return a*b;
	}
private:
	double a, b;
};

//圆形
class CCircle :public CFigure
{
public:
	CCircle()
	{
		r = 0;
	}
	CCircle(double r) :r(r){ }
	virtual char* FigureType()
	{
		return "Circle";
	}
	virtual double Circumference()
	{
		return 2 * r * M_PI;
	}
	virtual double Area()
	{
		return r*r*M_PI;
	}
private:
	double r;
};

 
int _tmain(int argc, _TCHAR* argv[])
{
	CFigure* figures[3];
	figures[0] = new CTriangle(2.1, 3.2, 4.3);
	figures[1] = new CSquare(5.4, 6.5);
	figures[2] = new CCircle(8.8);
	for (int i = 0; i < 3;i++)
	{
		cout << "Figure Type:\t" << figures[i]->FigureType()
			<< "\nCircumference:\t" << figures[i]->Circumference()
			<< "\nArea:\t\t" << figures[i]->Area()
			<< endl;

	}
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_39036700/article/details/81259997
今日推荐