1.const 修饰类的成员变量,表示成员常量,不能被修改。
2.const修饰函数承诺在本函数内部不会修改类内的数据成员,不会调用其它非 const 成员函数。
3.如果 const 构成函数重载,const 对象只能调用 const 函数,非 const 对象优先调用非 const 函数。
4.const 函数只能调用 const 函数。非 const 函数可以调用 const 函数。
5.类体外定义的 const 成员函数,在定义和声明处都需要 const 修饰符
6.const在*的左边,则指针指向的变量的值,不可直接通过指针改变(可以通过其他途径改变);
在*的右边,则指针的指向不可变。简记为“左定值,右定向”
class Person{
public:
int m_age;
float m_weight;
void display(){
cout<<"age="<<m_age<<" weight="<<m_weight<<endl;
}
};
int main(int argc, const char * argv[]) {
const Person *p = new Person();
p->display(); //报错
return 0;
}
p->display();报错 提示'this' argument to member function 'display' has type 'const Person', but function is not marked const
this当前对象是const,const 修饰的对象不能调用非const函数,想要调用需要 void display(){}改为 void display() const{},这时就能调用;另外非const对象也能调用const函数;
网友评论