宜昌市住房和城乡建设厅网站,建设银行网站点不了,wordpress博客如何安装,优设网的课程怎么样目录
1 常量对象#xff1a;
2 常量成员#xff1a;
2.1常量数据成员#xff1a;
常数据成员总结#xff1a;
2.2常量成员函数#xff08;使用最多#xff09;#xff1a;
常成员函数总结#xff1a;
3 常量引用#xff1a; C中常量的值在程序运行中不允许被改…目录
1 常量对象
2 常量成员
2.1常量数据成员
常数据成员总结
2.2常量成员函数使用最多
常成员函数总结
3 常量引用 C中常量的值在程序运行中不允许被改变定义或声明常量时必须初始化
常量对象
常量对象的数据成员的值始终为初始化所赋值在整个对象生命周期内不允许被修改
const class 对象名 {初始化列表};
class const 对象名 {初始化列表};
引例
class A
{
public:A(int i):id(i) //构造函数 { }void set(int i)//修改id的值{id i;}~A(){ }//析构函数
private:int id; //编号
};int main()
{//定义常量对象A const a{ 1 };//写法1const A b{ 1 };//写法2//错误常量对象的数据成员不允许被修改//a.set(10);//错误a的值不能修改//b.set(20);//错误b的值不能修改return 0;
} 常量成员
类的常量成员包括常量成员函数和常量数据成员。
常量数据成员
常量数据成员要求自第一次赋值之后数据不允许更改
引例居民身份证号
const 数据类型 变量名 赋值方式定义时在后面直接赋值构造函数的初始化列表内赋值 若两种赋值方式同时出现时以构造函数的具体赋值为准 class A
{
private:const int a 10;const int b 20;public:A(int c, int d) :a(c), b(d) {//a c;//错误的//b d;//仅有允许在初始化列表赋值函数内部错误};A() {};//重载函数无参数时构造函数不再赋值常数据成员。void show()const//自觉设为常函数避免复杂设计时错误产生{cout const a: a const b: b endl;}
};int main()
{A a(100, 200);//a对象采用初始化定义和构造函数初始化列表赋值两种方式//以初始化列表中数值为准a.show();A b;//无参数时构造函数不再赋值常数据成员//b 对象采用定义的同时初始化推荐此类方式b.show();return 0;
} 常数据成员总结 两种赋值方式都存在时以构造函数初始化列表内数据为准构造函数为常数据成员赋值时仅能采用函数初始化列表的方式构造函数的函数主题内赋值常数据成员是错误的而类内普通数据成员可以在参数列表或函数主题中完成初始化二选一即可推荐使用定义常数据成员的同时赋值 常量成员函数使用最多
返回值 函数名参数列表 const;
常量成员函数限定两个因素:成员函数访问对象的所有数据、常量限定对象的数据不能被修改 结构说明 C中所有的成员函数中都隐含一个指向对象的this指针也正是因为this 隐含const无法直接限定对象只能放在函数最后注意区分常量引用const 位于参数列表const 作为常量限定的关键字在声明和定义实现的两处都有区别于友元、静态仅声明处有定义处没有const 可以作为重载函数的区分加const 与未加const 为重载函数 class A
{
public:A(int i) :id(i) { }//构造函数void set(int i)//修改id的值{id i;cout 修改后的值:;show();}void show()const//常函数输出{cout id id endl;//error: id;// 错误原因常函数内对象的数据不允许被修改// //error:set(2);//错误原因常函数内可以调用常函数不能调用普通函数}~A() { }//析构函数
private:int id; //编号
};int main()
{A a{ 1 };//普通对象const A b{ 1 };//常对象a.show();b.show();a.set(2);// error:b.set(2);//出错原因常对象只能调用常函数return 0;
} 常成员函数总结 常成员函数内不允许修改对象的值常成员函数内可以调用常成员函数而不允许调用普通函数常对象仅能调用常成员函数不能调用普通成员函数普通对象既能调用普通成员函数又能调用常成员函数普通成员函数内既能调用常成员函数又能调用普通成员函数 权限仅能缩小传递不能放大传递 注意在函数设计时如若对象的数据成员无需修改则定义为常函数在函数声明和定义最后加const 关键字限定 避免常对象无法正确调用函数、函数内错误修改不必要修改的值 常量引用
常量引用用const 修饰引用则不能通过引用修改原对象的数据成员修饰形参
const 类型 变量名//格式
void Show(const int x)
{//x; //错误常量引用作为形参其值不能被改变cout x endl;
}
int main()
{int i 12;Show(i);return 0;
}
主要使用场景修饰形参
class A
{
public:A(int a 0, int b 0) :m_a(a), m_b(b){}A(const A ca)//拷贝构造函数,不允许修改ca的内容{m_a ca.m_a;m_b ca.m_b;}
private:int m_a;int m_b;
};int main()
{A a{10,20};A b{ a };return 0;
} 区分const放在函数最后常成员函数const 放在函数参数列表常引用 常函数修饰函数限制函数内隐含指向对象的this指针使得函数主体内对象的数据成员不允许被修改。常引用修饰形参限制引用的一改同改的特性因而不允许修改参数对象的数据成员,即同时满足引用和常量的性质