2018/4/20
C++
1.static(静态标识符)
1-1:对于一般的属性而言,是针对某个对象的,但是对于加上static关键字而言,针对的是对于整个类的属性(类属性)
1-2:在c++中使用类的静态数据来描述静态属性,同时使用静态成员函数的方式使用静态数据
1-3:由类修饰的静态数据成员,在内存中只能存在一个,不属于任何一个对象,任何类中的对象共用这一个数据成员
1-4:定义方法:
class Point
{
public:
Point(float x, float y);//带参构造
//Point p1(2,3);
//p1.draw();
//p1.showCounter();
void draw();
static void showCounter();//静态方法
private:
float x, y;
static int counter;//静态变量
};
1-4:具体实现
#include"text.h"
#include<iostream>
Point::Point(float x, float y)
{
this->x = x;
this->y = y;
counter++;//静态变量
}
void Point::draw()
{
std::cout << "x的值为" << x << std::endl;
std::cout << "y的值为" << y << std::endl;
}
//静态参数的显示
void Point::showCounter()
{
std::cout << "计数器为" << counter << std::endl;
}
int Point::counter = 0;//设置静态变量的初始值,由于静态变量不属于任何类 所以使用类定义
void main()
{
Point p1(1.0, 2.0);
p1.draw();
p1.showCounter();
std::cout << " " << std::endl;
Point p2(2.0, 3.0);
p2.draw();
p2.showCounter();
system("pause");
}
2.const(常修饰符)
2-1:常数据成员:使用const进行修饰,只能从类的构造函数进行初始化,初始化之后不能对其进行改变
2-2:常成员函数:
对常成员进行操作,一般而言,普通对象可以调用常成员函数,常对象不能调用普通方法
同名常成员函数和普通函数可以同时存在,相当于对函数的重载
2-3:定义
//普通对象可以调用常函数的方法
//常对象不能调用普通对象的方法
//常变量一旦被调用就不能进行更改
//对于常变量有着自己的构造函数
class Point
{
public:
Point();//默认构造,如果未检测任何构造函数,系统会自动构造
Point(float x, float y);//带参构造
void draw();//方法
void drawOrigin()const;//常成员函数
~Point();//析构函数
private:
float x, y;
const float xOrigin, yOrigin;//常量
};
2-4:
使用常函数时,对构造函数进行少许修改
Point::Point(float x, float y) : xOrigin(1), yOrigin(1)//带参构造函数,实现常量初始化
{
this->x = x;
this->y = y;
}
2-5:具体实现步骤//常量:只能在构造函数中对值进行初始化 不能进行更改
#include"text.h"
#include<iostream>
#include<stdlib.h>
Point::Point() :xOrigin(0), yOrigin(0)//常量构造初始化
{
//无参常函数构造函数
}
Point::Point(float x, float y) : xOrigin(1), yOrigin(1)//带参构造函数,实现常量初始化
{
this->x = x;
this->y = y;
}
void Point::draw()
{
std::cout << "x坐标值为" << x << std::endl;
std::cout << "y坐标值为" << y << std::endl;
}
void Point::drawOrigin()const
{
std::cout << "x初始化值为" << xOrigin << std::endl;
std::cout << "y初始化值为" << yOrigin << std::endl;
}
Point::~Point()
{
std::cout << "表面删除" << std::endl;
}
//注:普通对象可以调用常方法和普通方法
//常对象不能调用普通方法
int main()
{
Point a1(1.0,2.0);//由类引出对象
a1.draw();
a1.drawOrigin();
std::cout << std::endl;
const Point a2(0.0,0.0);//使用构造函数实现了常量的初始化
a2.drawOrigin();
a1.~Point();//析构函数
a2.~Point();//析构函数
system("pause");
}