const可以看做是弥补#define的不足而出现的。显然它的功能已经大大超过了#define。
const可使用与变量与函数还有指针,引用,其实质都是一样“使不改变”。
const用于变量与对象:
const int test = 1;//用于普通变量,相当于#define test 1
//这样,test就是常量了,并且与#define相比,它可以参加逻辑运算。//用于类对象
class A
{
public:
int num;
};
int main()
{
const A testA;
testA.num = 1;//报错,const对象不能修改
return 0;
}
const用于函数:
class A
{
int num;
int add(int elem) const;
};
int A::add(int elem) const
{
elem++;
return elem;
}
上面代码编译会报错,因为用const修饰的函数修改了成员数据。
const用于指针,引用:
//普通的引用与指针传递,可以修改传入的数据
void testf(string &a);
void testg(string *a);
//我们知道传递引用和指针可以用来修该数据,但是某些时候,我们并不希望程序修改源数据,同时,值传递花费太大。这时,我们可以使用const传递
//const引用于指针传递,不可以修改传入的数据
void testf(const string &a);
void testg(const string *a);
【还有很多遗漏的地方,待完善】
原文链接: https://www.cnblogs.com/CAION/archive/2012/12/25/2832831.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/73516
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!