指针与const
//demo.cpp
int main()
{
int i = 1024;
//const修饰的是指针指向的对象,不能解引用修改i的值
const int * p = &i;
//*i = 10;
//指针是一个常量,不能修改指针的指向
int * const p2 = &i;
int n = 1233;
//p2 = &n;
}
const 在类中的使用方法
//demo.cpp
class Demo
{
public:
int GetX()cosnt
{
return x;
}
private:
int x;
};
在方法名后面加const,表示不会修改这个类中的任何东西。
const与常量引用
#inlcude <isotream>
class Demo
{
public:
int GetX()
{
return x;
}
private:
int x;
};
void print(const Demo& e)
{
std::cout<<e.GetX();
}
int main()
{
Demo demo;
print(demo);
std::cin.get();
}
编译是不会通过的,因为常量引用表示不会修改引用对象,而GetX()不是常函数,所以是可以修改对象的,所以必修要在函数名后面加const。
#inlcude <isotream>
class Demo
{
public:
int GetX()const
{
return x;
}
private:
int x;
};
void print(const Demo & e)
{
std::cout<<e.GetX();
}
mutable关键字
mutable修饰的变量,可以在常函数中修改。
class Demo
{
public:
int GetX()cosnt
{
var = 10
return x;
}
private:
mutable int var;
int x;
};