#include
using namespace std;
class Point{
private:
int x,y;
public:
point(int x = 0,int y = 0):x(x),y(y){}
~point();
int getX(){return x;}
int getY(){return x;}
}
#include
using namespace std;
class Point{
private:
int x,y;
int count;
public:
point(int x = 0,int y = 0):x(x),y(y){}
~point();
int getX(){return x;}
int getY(){return x;}
void addcount(){count++;}
}
#include
using namespace std;
class Point{
private:
int x,y;
static int count;
public:
point(int x = 0,int y = 0):x(x),y(y){}
~point();
int getX(){return x;}
int getY(){return x;}
void showCount(){cout<<count<<endl;}
}
int Point::count = 0;
#include
using namespace std;
class Point{
private:
int x,y;
static int count;
public:
Point(int x = 0,int y = 0):x(x),y(y){count++;}
~Point(){count--;};
int getX(){return x;}
int getY(){return x;}
void showCount(){cout<<count<<endl;}
};
int Point::count = 0;
int main(){
Point a(4,5);
cout<<"PointA:"<<a.getX()<<","<<a.getY()<<endl;
a.showCount();
Point b;
cout<<"PointB:"<<b.getX()<<","<<b.getY()<<endl;
b.showCount();
}
运行结果:
PointA:4,4
1
PointB:0,0
2
静态变量一般只用于“统计对象个数”这种必须多个对象共享的场合!
#include
using namespace std;
class Point{
private:
int x,y;
static int count;
public:
Point(int x = 0,int y = 0):x(x),y(y){count++;}
Point(Point &p) //复制构造函数
{
x = p.x;
y = p.y;
count++;
}
~Point(){count--;};
int getX(){return x;}
int getY(){return x;}
static void showCount(){cout<<count<<endl;}//只能包含静态数据成员
};
int Point::count = 0;
int main(){
Point a(4,5);
cout<<"PointA:"<<a.getX()<<","<<a.getY()<<endl;
Point::showCount();//类名称调用静态函数
Point b;
cout<<"PointB:"<<b.getX()<<","<<b.getY()<<endl;
Point::showCount();
}
思考:为什么在静态函数中只能包含静态变量?
#include
using namespace std;
class Rectangle{
private:
int width, height;
static int count;
public:
Rectangle();//无参构造函数
Rectangle(int newwidth,int newheight);//有参构造函数
~Rectangle();
static void getCount(){cout<<"矩形个数:"<<count<<endl;}
//内联函数,设置属性的值,一般只有这种很短的函数才可以写在定义中
//this 表示的是当前对象的意思
void setWidth(int width)
{
this->width = width;
}
void setHeight(int height)
{
this->height = height;
}
//获得属性的值
int getWidth()
{
return width;
}
int getHeight()
{
return height;
}
int getArea(){
int area = this->width * this->height;
return area;
}
int getPerimeter(){
int Perimeter = (this->width + this->height)*2;
return Perimeter;
}
};
int Rectangle::count = 0;
Rectangle::Rectangle(){
this->width = 1;
this->height = 1;
count++;
}
Rectangle::Rectangle(int newwidth,int newheight){
this->width = newwidth;
this->height = newheight;
count++;
}
Rectangle::~Rectangle(){
count--;
}
int main(){
Rectangle myRectangle1;
cout<<"利用无参构造函数创建的时间对象"<<endl;
int W1 = myRectangle1.getWidth();
int H1 = myRectangle1.getHeight();
int A1 = myRectangle1.getArea();
int P1 = myRectangle1.getPerimeter();
cout<<"矩形的长为:"<<W1<<endl<<"矩形的宽为:"<<H1<<endl<<"矩形的面积为:"<<A1<<endl<<"矩形的周长为:"<<P1<<endl;
Rectangle::getCount();
int W2,H2;
cin>>W2>>H2;
Rectangle myRectangle2(W2,H2);
cout<<"利用有参构造函数创建的时间对象"<<endl;
int A2 = myRectangle2.getArea();
int P2 = myRectangle2.getPerimeter();
cout<<"矩形的长为:"<<W2<<endl<<"矩形的宽为:"<<H2<<endl<<"矩形的面积为:"<<A2<<endl<<"矩形的周长为:"<<P2<<endl;
Rectangle::getCount();
return 0;
}
//Rectangle.h
#ifndef RECTANGLE_H
#define RECTANGLE_H
class Rectangle{
private:
int width, height;
static int count;
public:
Rectangle();//无参构造函数
Rectangle(int newwidth,int newheight);//有参构造函数
~Rectangle();
static void getCount(){};
//内联函数,设置属性的值,一般只有这种很短的函数才可以写在定义中
//this 表示的是当前对象的意思
void setWidth(int width);
void setHeight(int height);
//获得属性的值
int getWidth();
int getHeight();
int getArea();
int getPerimeter();
};
#endif
//Rectangle.cpp
#include "Rectangle.h"
#include
using namespace std;
int Rectangle::count = 0;
Rectangle::Rectangle(){
this->width = 1;
this->height = 1;
count++;
}
Rectangle::Rectangle(int newwidth,int newheight){
this->width = newwidth;
this->height = newheight;
count++;
}
Rectangle::~Rectangle(){
count--;
}
void Rectangle::getCount(){cout<<"矩形个数:"<<count<<endl;}
void Rectangle::setWidth(int width){this->width = width;}
void Rectangle::setHeight(int height)
{this->height = height;}
//获得属性的值
int Rectangle::getWidth(){return width;}
int Rectangle::getHeight(){return height;}
int Rectangle::getArea()
{
int area = this->width * this->height;
return area;
}
int Rectangle::getPerimeter()
{
int Perimeter = (this->width + this->height)*2;
return Perimeter;
}
//job1.cpp
#include "Rectangle.h"
#include
using namespace std;
int main(){
Rectangle myRectangle1;
cout<<"利用无参构造函数创建的时间对象"<<endl;
int W1 = myRectangle1.getWidth();
int H1 = myRectangle1.getHeight();
int A1 = myRectangle1.getArea();
int P1 = myRectangle1.getPerimeter();
cout<<"矩形的长为:"<<W1<<endl<<"矩形的宽为:"<<H1<<endl<<"矩形的面积为:"<<A1<<endl<<"矩形的周长为:"<<P1<<endl;
Rectangle::getCount();
int W2,H2;
cin>>W2>>H2;
Rectangle myRectangle2(W2,H2);
cout<<"利用有参构造函数创建的时间对象"<<endl;
int A2 = myRectangle2.getArea();
int P2 = myRectangle2.getPerimeter();
cout<<"矩形的长为:"<<W2<<endl<<"矩形的宽为:"<<H2<<endl<<"矩形的面积为:"<<A2<<endl<<"矩形的周长为:"<<P2<<endl;
Rectangle::getCount();
return 0;
}