c++ const

c++ 在函数后加const的意义:
   咱们定义的类的成员函数中,经常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。若是把不改变数据成员的函数都加上const关键字进行标识,显然,可提升程序的可读性。其实,它还能提升程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。 const成员函数和const对象 实际上,const成员函数还有另一项做用,即常量对象相关。对于内置的数据类型,咱们能够定义它们的常量,用户自定义的类也同样,能够定义它们的常量对象。html

 

非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为 const指针,决定了在该成员函数中,任意修改它所在的类的成员的操做都是不容许的(由于隐含了对this指针的const引用);惟一的例外是对于 mutable修饰的成员。加了const的成员函数能够被非const对象和const对象调用,但不加const的成员函数只能被非const对象调 用。例如:
class A
{
private:
int m_a;
public:
A() : m_a(0) {}
int getA() const { return m_a; //同return this->m_a;}
int GetA() { return m_a; }
int setA(int a) const
{
m_a = a; //这里产生编译错误,若是把前面的成员定义int m_a;改成mutable int m_a;就能够编译经过。
}
int SetA(int a)
{ m_a = a; //同this->m_a = a;
}
};
A a1;
const A a2;
int t;
t = a1.getA();
t = a1.GetA();
t = a2.getA();
t = a2.GetA(); //a2是const对象,调用非const成员函数产生编译错误。c++

 

http://www.cnblogs.com/xudong-bupt/p/3509567.html函数

 

 

总结:this

①类的方法后面使用,int hhh const{。。。},即表示该方法不能改变类的数据成员指针

htm

const修饰指针变量时:对象

  (1)只有一个const,若是const位于*左侧,表示指针所指数据是常量,不能经过解引用修改该数据;指针自己是变量,能够指向其余的内存单元。(在数据类型哪边都同样)blog

  (2)只有一个const,若是const位于*右侧,表示指针自己是常量,不能指向其余内存地址;指针所指的数据能够经过解引用修改。内存

  (3)两个const,*左右各一个,表示指针和指针所指数据都不能修改。get

相关文章
相关标签/搜索