C++ 中函数和const关键字
#include <iostream>
using namespace std;
class A
{
int data;
public:
int value1 = 10;
const int value2 = 20;
A(int da = 18) :data(da) {}
void display1() { cout << data; }
void display2() const { cout << data; }
void display3() const
{
data += 100; //error : 后面的const函数修饰符决定了,不能对类成员进行修改,且只能被 const修饰的A类的实例引用
}
const int GetData() const {
return data;
}
const int& GetValue() const {
return data;
}
const int* GetAge() const {
return &data;
}
};
void main()
{
A a1(18);
const A a2(28); //const修饰的A类的实例a2,只能引用该类的const成员函数
//..................................................................................................................................
a1.display1();
a1.display2(); //非const修饰的对象,可以调用const修饰的类成员函数
a1.dispaly3(); //error ,const声明的成员函数不能改变数据成员的值
a1.value1;
a1.value1 += 1;
a1.value2;
a1.value2 += 1; //只读
a2.display1(); //error ,const对象不能调用非const函数
a2.display2(); //right
a2.display3(); //error ,const对象不能改变数据成员值
a2.value1;
a2.value1 += 1; //只读
a2.value2;
a2.value2 += 1; //只读
//..................................................................................................................................
//const int GetData() 返回类型const修饰符有什么用?No point?
int var1 = a1.GetData();
const int var2 = a1.GetData();
int var3 = a2.GetData();
const int var4 = a2.GetData();
int data1 = a1.GetValue(); //right
const int data2 = a1.GetValue();
int data3 = a2.GetValue(); //right
const int data4 = a2.GetValue();
int& Value1 = a1.GetValue(); //非const修饰dValue1,不能引用返回值被const修饰返回值的函数;
const int& Value2 = a1.GetValue();
int& Value3 = a2.GetValue(); //非const修饰dValue1,不能引用返回值被const修饰返回值的函数;
const int& Value4 = a2.GetValue();
int* age1 = a1.GetAge(); //非const修饰age1,不能引用返回值被const修饰返回值的函数;
const int* age2 = a1.GetAge();
int* age3 = a2.GetAge(); //非const修饰age3,不能引用返回值被const修饰返回值的函数;
const int* age4 = a2.GetAge();
}