C++——const用法总结

文章目录

  • 前言
  • 一、const修饰的变量
  • 二、const修饰的函数
  • 三、const修饰的对象
  • 四、const修饰的引用
  • 五、const修饰的指针
  • 总结


前言

const常用来修饰变量,表示变量不可修改,通常我们称它为常量


一、const修饰的变量

1、C++中const比C多出了一个属性,只能在本.cpp文件中使用,其他.cpp文件不可见
2、const修饰的变量不能在编译时修改,但可以在运行时通过内存去修改,但不建议这样使用
3、被const修饰的变量位于静态存储区或者栈区

const int a;

二、const修饰的函数

1、const修饰的函数叫做常函数,常函数中的this指针被const修饰,在常函数中成员变量不能修改
2、常对象只能调用常函数,但是类中的成员变量被mutable修饰,常函数可以对该成员进行修改

class student
{
public:
	void show()const
	{
		cout<<"示范"<<endl;
	}
};

三、const修饰的对象

1、const修饰的对象叫做常对象,常对象只能调用成员函数
2、常对象不能使用默认构造函数初始化

class student
{
public:
	void show()const
	{
		cout<<"示范"<<endl;
	}
};
int main()
{
	student s;
	s.show();
	return 0;
}

四、const修饰的引用

1、const修饰的引用叫做常引用,不能通过常引用改变变量的值
2、常引用可以指向临时的值

class student
{
public:
	student(const student& other){}//拷贝构造函数,其中参数就是常引用
	student(){}
	void show()const
	{
		cout<<"示范"<<endl;
	}
};

五、const修饰的指针

1、const修饰的指针一般都是一些隐藏起来的指针,C++离不开指针,但是在日常的编码中,指针通常是以被封装的形式存在,发挥着十分重要的作用
2、类中的this指针,就是被const修饰的,这与常函数的this指针有些不同,该this指针为this指针的本体,常函数中this指针表示this指针指向的成员变量不能改

#include 

using namespace std;
class Myclass
{
public:
    Myclass(int i=1)
    {
        cout<<1;
    }
    ~Myclass()//析构函数函数体内建议不要写delete
    {
        cout<<2;
        delete this;
        this=NULL;//此处报错,去掉此句会造成死递归
    }
};
void fun()
{
    Myclass m;
}
int main()
{
    fun();
    return 0;
}

总结

1、const本意就是不可更改,既然已经使用const进行修饰大家最好不要去尝试更改,如果到了万不得以的时候,也恰恰说明了你的逻辑可能出现了一些问题
2、在编码时也要注意变量的生存周期,引用作为参数是不可以传递临时值的,但是常引用却可以,通常在模板或者拷贝构造中会碰到类似的问题

你可能感兴趣的:(C++,c++,开发语言)