在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的基本用法,本次代码分享到此结束,谢谢大家观看,希望大家点点赞,点点关注,谢谢大家!