C++常数据(函数)成员精讲
更新时间:2024-05-16 04:11:01 阅读量: 综合文库 文档下载
C++常数据成员精讲—const关键字
更多内容:http://www.cctwl.com/ 内容提要:
用const修饰的定义对象称为常对象; 用const修饰的声明成员函数称为常成员函数; 用const修饰的声明数据成员称为常数据成员。
变量或对象被 const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。
用const修饰的声明数据成员称为常数据成员。
有两种声明形式:
const int cctwl; int const cctwl;
int cctwl const; //这样是错误的只能有以上两种声明形式。不能省略数据类型,可以添加 public private等访问控制符。 说明:
1.任何函数都不能对常数据成员赋值。
2.构造函数对常数据成员进行初始化时也只能通过初始化列表进行。 3.常数据成员在初始化时必须赋值或称其必须初始化. 4.如果类有多个默认构造函数必须都初始化常数据成员。 通过下面例子来理解常数据成员以上4点。 A、请指出下面程序的错误 class A
{ private:
int w,h;
const int cctwl=5; //错误一
public: }; void main() {
A a ; //错误二
cout<< \ }
错误一:不能对常数据成员在类中初始化、要通过类的构造函数,只有静态常量才能这样初始化。
错误二:没有合适的默认构造函数可用。因为有常量cctwl没有初始化必须初始化所有常数据成员。 更正后结果如下: class A{ private: int w,h; const int cctwl; public:
const int cctwlcom;//常对象可以是共有私有等访问权限
system(\
A():cctwl(5),cctwlcom(8){};//通过构造函数初始化列表初始化常成员数据。 };
B、多个构造函数下的常数据成员 请指出下面程序的错误: class A{ private: int w,h;
const int cctwl; public:
const int cct; A():cctwl(5),cct(6){};
A(int x,int y) //错误一 { } }; void main() { A a ; A b(3,8); cout<< \ system(\
w=x,h=y;
}
错误一:每个构造函数都要初始化常数据成员应改为 A(int x,int y):cctwl(7),cct(8) {
w=x,h=y; }
C++常成员函数 - const 关键字
一、常成员函数详解
声明:<类型标志符>函数名(参数表)const; 说明:
(1)const是函数类型的一部分,在实现部分也要带该关键字。 (2)const关键字可以用于对重载函数的区分。
(3)常成员函数不能更新任何数据成员,也不能调用该类中没有用const修
饰的成员函数,只能调用常成员函数和常数据成员。
A、通过例子来理解const是函数类型的一部分,在实现部分也要带该关键字。 class A{ private: int w,h; public:
int getValue() const; int getValue(); A(int x,int y) {
w=x,h=y; } A(){} };
int A::getValue() const //实现部分也带该关键字 {
return w*h; //???? }
void main() {
A const a(3,4); A c(2,6);
cout<
B、通过例子来理解const关键字的重载 class A{ private: int w,h; public:
int getValue() const {
return w*h; }
int getValue(){ return w+h; }
A(int x,int y) {
w=x,h=y; } A(){} }; void main() {
A const a(3,4); A c(2,6);
cout<
C、通过例子来理解常成员函数不能更新任何数据成员 class A{ private: int w,h; public:
int getValue() const; int getValue(); A(int x,int y) {
w=x,h=y; } A(){}
};
int A::getValue() const {
w=10,h=10;//错误,因为常成员函数不能更新任何数据成员 return w*h; }
int A::getValue() {
w=10,h=10;//可以更新数据成员 return w+h; }
void main() {
A const a(3,4); A c(2,6);
cout<
D、通过例子来理解
1、常成员函数可以被其他成员函数调用。
2、但是不能调用其他非常成员函数。
3、可以调用其他常成员函数。 class A{
private: int w,h; public:
int getValue() const {
return w*h + getValue2();//错误的不能调用其他非常成员函数。 }
int getValue2() {
return w+h+getValue();//正确可以调用常成员函数 }
A(int x,int y) {
w=x,h=y; } A(){} }; void main() {
A const a(3,4); A c(2,6);
cout<
正在阅读:
C++常数据(函数)成员精讲05-16
水工监测(高级工)09-18
小学生座右铭02-11
EIA 364 90 串音(Cross talk) 测试规范介绍08-19
十三五(2016-2020年)中国维生素C片行业供需现状及投资风险研究04-21
你若盛开 精彩自来08-13
深化设计合同范本10-14
宁乡十里画廊一期(南门桥-金洲大道)生态综合治理工程环境影响报告表 - 图文12-16
呼伦贝尔十三五国控重点流域河流水质状况03-08