在C++中,const
是一个关键字,用于声明常量。它可以用于多种情况,包括声明常量变量、常量指针、以及成员函数中的常量性。
1.常量变量
通过在变量声明前加上 const
关键字,可以创建一个不可修改的常量。
例如:
const int x = 10;
2.常量指针
const 还可以用于声明指向常量的指针,这意味着指针所指向的值不能被修改,但指针本身可以被修改。例如:
int y = 5;
const int *ptr = &y;
在这个例子中,ptr
是一个指向常量整数的指针,因此不能通过 ptr
来修改 y
的值,但可以通过其他途径修改 y
。
3.常对象 const
1) 常函数中的 this 是被 const 修饰的,在常函数中成员变量不能被修改 ;
2) 常函数只能调用常函数;
语法:在成员函数后面加const关键字
示例:
#include <iostream>
using namespace std;
class Person
{int age;
public:Person(){}Person(int a):age(a){}//常函数:1.不可以改变成员变量的值 2.常函数只能调用常函数void show() const{//++age;值不可以修改cout<<age<<endl;setAge(25);}void setAge(int a) const{//age = a;值不可以修改cout<<age<<endl;}
};int main(int argc, const char *argv[])
{Person p(1);p.show();return 0;
}
4.常对象
语法:1.const 类名 对象名 ( 实参 )
2.类名 const 对象名 ( 实参 )
注意常对象:
(1) 成员变量必须有初值
(2) 只能调用常成员函数
功能:希望对象所有成员的值不被修改
示例:
#include <iostream>
using namespace std;
class Person
{int age;
public:Person(){}Person(int a):age(a){}/*void show() const //常函数:1.不可以改变成员变量的值{cout<<"const....."<<age<<endl;}*/void show()//自由的函数{cout<<"show..."<<age<<endl;}
};int main(int argc, const char *argv[])
{Person p(1);//1.自由的对象首选调用自由的函数,没有自由的函数,可以调用常函数p.show();const Person p1(10);//2.常对象:只能调用常函数,不能调用自由的函数Person const p2(20);p1.show();return 0;
}
5.对比
* 普通对象: 1. 可以调用常函数
* 2. 普通函数和常函数可以构成函数的重载(特殊的重载)
* 3. 普通函数和常函数同时存在时,普通的对象调用自由的函数
*
* 常对象: 1. 只能调用常函数 , 不能调用自由的函数
* 2. 注意:成员变量要有初值
6.mutable 关键字
作用:mutable 修饰的成员变量可以在常函数中修改。
示例:
#include <iostream>
using namespace std;
class Person
{
private:string name;int age;mutable int a;
public:Person(int age,string name,int a):age(age),name(name),a(a){}void show(){cout<<age<<" "<<name<<endl;}void show() const{++a;cout<<age<<"$$$"<<name<<" "<<a<<endl;}
};int main()
{Person p(20, "小明",10);p.show();const Person p2(30, "小强",10);p2.show();
}
以上就是const的基本用法,本次代码分享到此结束,谢谢大家观看,希望大家点点赞,点点关注,谢谢大家!