浅谈C++关键字:static const

本文详细介绍了C++中静态成员与常量成员的概念及应用。包括静态成员变量和静态成员函数的特点与实现方式,以及常量成员变量的初始化方法和常量成员函数的使用限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值