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;
}