第五讲wince开发基础-文档资料
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类和对象(二)
常对象和常对格式如下: 类名 const 对象名; 或者: const 类名 对象名;
使用常对象成员时需要注意以下几点:
• 在定义常对象时必须进行初始化。
• 常对象的数据成员不能被更新。
•常对象对非const修饰的成员函数不能被
调用wh。
MyClass1(int i) {n=i;}
Conversion loses qualifiers
void setvalue(int i) {n=i;}
Error executing cl.exe.
void display()
{
31.obj - 2 error(s), 0 warning(s)
cout<<"n="<<n<<endl;
2. 常数据成员
与一般数据相同,类的成员数据也可以是常量和常引用, 使用const说明的数据成员称为常数据成员。如果在一个类中说
明了n个常数据成员,那么构造函数就只能通过初始化列表对
该数据成员进行初始化,其一般格式如下:
构造函数(参数表):常数据成员1(参数1),常数据成员2(参数2),…, 常数据 成员n(参数n)
其中,冒号后面是一个数据成员的初始化列表, 它包含一个初始化项,当有多个初始化项时,要用 逗号分隔开。“参数1”~“参数n”均为“参数表” 中的某个参数。这样,在执行构造函数时自动将 “常数据成员1”赋值为“参数1”的值,“常数据 成员2”赋值为“参数2”的值,…,“常数据成员n” 赋值为“参数n”的值。
}
};
void main() {
常对象a不能被更新
const MyClass1 a(10); //常对象
a.setvalue(6);
a.display();
//调用了非const的成员函数
}
D:\新建文件夹\3_1\31.cpp(17) : error
分析程序错误(示) C2662: 'display' : cannot convert 'this' pointer from 'const class MyClass1' to
常对象成员
常对象成员包括常成员函数和常数据成员。
1. 常成员函数
使用const关键词声明的函数为常成员函数,常成员函数 声明格式如下:
类型 函数名(参数表) const;
使用常对象成员时需要注意以下几点:
• const是函数类型的一个组成部分,因此在实现部分
也要带const关键词。
• 常成员函数不更新对象的数据成员,也不能调用该类
例3.3 分析程序 (构造函数又称构造对象函数)
#include<iostream.h>
class MyClass3
{
const int n,m; //常数据成员
public:
//初始化列表对该数据成员进行初始化
MyClass3(int i,int j):n(i),m(j) {}
int n; public:
Conversion loses qualifiers D:\新建文件夹\3_1\31.cpp(17) : error C2662: 'display' : cannot convert 'this' pointer from 'const class MyClass1' to 'class MyClass1 &'
中没有用const修饰的成员函数。
• 如果将一个对象说明为常对象,则通过该常对象只能
调用它的常成员函数,而不能调用其他成员函数。
• const关键词可以参与区分重载函数。例如,在类中
有如下说明: “void print(); void print() const;”,则这是对print的有效重载。
例3.2
#include<iostream.h>
'class MyClass1 &'
class MyClass1
Conversion loses qualifiers
{
Error executing cl.exe.
int n;
public:
31.obj – 1 error(s), 0 warning(s)
MyClass1(int i) {n=i;}
#include<iostream.h> class MyClass2 {
int n; public:
MyClass2(int i) {n=i;} void printf() {cout<<“1:n=“<<n<<endl;} void print() const {
cout<<“2:n="<<n<<endl; } }; void main() { MyClass2 a(10); //定义普通对象 const Myclass2 b(20); //定义常对象 a.printf(); //调用void printf() b.printf(); //调用void print() const }
a.display();
}
改正后的程序
#include<iostream.h> class MyClass1 {
int n; public:
MyClass1(int i) {n=i;} void setvalue(int i) {n=i;} ~MyClass1() {
cout<<"n="<<n<<endl; } }; void main() { const MyClass1 a(10);//常对象 //a.setvalue(6); //a.display(); }
error C2662: 'setvalue' : cannot
分析程序错误
convert 'this' pointer from 'const class MyClass1' to 'class MyClass1 &'
#include<iostream.h> class MyClass1 {
void setvalue(int i) {n=i;}
void display()
//void display() const
{
cout<<"******"<<endl;
} };
常对象非const的成员函数不
void main()
能被调用
{
const MyClass1 a(10);//常对象
//a.setvalue(6);
常对象和常对格式如下: 类名 const 对象名; 或者: const 类名 对象名;
使用常对象成员时需要注意以下几点:
• 在定义常对象时必须进行初始化。
• 常对象的数据成员不能被更新。
•常对象对非const修饰的成员函数不能被
调用wh。
MyClass1(int i) {n=i;}
Conversion loses qualifiers
void setvalue(int i) {n=i;}
Error executing cl.exe.
void display()
{
31.obj - 2 error(s), 0 warning(s)
cout<<"n="<<n<<endl;
2. 常数据成员
与一般数据相同,类的成员数据也可以是常量和常引用, 使用const说明的数据成员称为常数据成员。如果在一个类中说
明了n个常数据成员,那么构造函数就只能通过初始化列表对
该数据成员进行初始化,其一般格式如下:
构造函数(参数表):常数据成员1(参数1),常数据成员2(参数2),…, 常数据 成员n(参数n)
其中,冒号后面是一个数据成员的初始化列表, 它包含一个初始化项,当有多个初始化项时,要用 逗号分隔开。“参数1”~“参数n”均为“参数表” 中的某个参数。这样,在执行构造函数时自动将 “常数据成员1”赋值为“参数1”的值,“常数据 成员2”赋值为“参数2”的值,…,“常数据成员n” 赋值为“参数n”的值。
}
};
void main() {
常对象a不能被更新
const MyClass1 a(10); //常对象
a.setvalue(6);
a.display();
//调用了非const的成员函数
}
D:\新建文件夹\3_1\31.cpp(17) : error
分析程序错误(示) C2662: 'display' : cannot convert 'this' pointer from 'const class MyClass1' to
常对象成员
常对象成员包括常成员函数和常数据成员。
1. 常成员函数
使用const关键词声明的函数为常成员函数,常成员函数 声明格式如下:
类型 函数名(参数表) const;
使用常对象成员时需要注意以下几点:
• const是函数类型的一个组成部分,因此在实现部分
也要带const关键词。
• 常成员函数不更新对象的数据成员,也不能调用该类
例3.3 分析程序 (构造函数又称构造对象函数)
#include<iostream.h>
class MyClass3
{
const int n,m; //常数据成员
public:
//初始化列表对该数据成员进行初始化
MyClass3(int i,int j):n(i),m(j) {}
int n; public:
Conversion loses qualifiers D:\新建文件夹\3_1\31.cpp(17) : error C2662: 'display' : cannot convert 'this' pointer from 'const class MyClass1' to 'class MyClass1 &'
中没有用const修饰的成员函数。
• 如果将一个对象说明为常对象,则通过该常对象只能
调用它的常成员函数,而不能调用其他成员函数。
• const关键词可以参与区分重载函数。例如,在类中
有如下说明: “void print(); void print() const;”,则这是对print的有效重载。
例3.2
#include<iostream.h>
'class MyClass1 &'
class MyClass1
Conversion loses qualifiers
{
Error executing cl.exe.
int n;
public:
31.obj – 1 error(s), 0 warning(s)
MyClass1(int i) {n=i;}
#include<iostream.h> class MyClass2 {
int n; public:
MyClass2(int i) {n=i;} void printf() {cout<<“1:n=“<<n<<endl;} void print() const {
cout<<“2:n="<<n<<endl; } }; void main() { MyClass2 a(10); //定义普通对象 const Myclass2 b(20); //定义常对象 a.printf(); //调用void printf() b.printf(); //调用void print() const }
a.display();
}
改正后的程序
#include<iostream.h> class MyClass1 {
int n; public:
MyClass1(int i) {n=i;} void setvalue(int i) {n=i;} ~MyClass1() {
cout<<"n="<<n<<endl; } }; void main() { const MyClass1 a(10);//常对象 //a.setvalue(6); //a.display(); }
error C2662: 'setvalue' : cannot
分析程序错误
convert 'this' pointer from 'const class MyClass1' to 'class MyClass1 &'
#include<iostream.h> class MyClass1 {
void setvalue(int i) {n=i;}
void display()
//void display() const
{
cout<<"******"<<endl;
} };
常对象非const的成员函数不
void main()
能被调用
{
const MyClass1 a(10);//常对象
//a.setvalue(6);