没有合适的资源?快使用搜索试试~ 我知道了~
C++_作业_4_答案2
需积分: 0 1 下载量 124 浏览量
2022-08-03
19:03:59
上传
评论
收藏 277KB PDF 举报
温馨提示
试读
5页
1. mutable 成员一般在什么情况下定义 2. 类的实例成员指针和静态成员指针有什么不同 3. 分析如下定义是否正确,并指出错误原因 4. 分析如下定义是
资源推荐
资源详情
资源评论
1. mutable 成员一般在什么情况下定义?mutable 成员可以同时定义为 static、const、volatile
或它们的组合吗?说明理由。
参考答案
mutable 用于修饰类的非静态数据成员。它使得 const 对象的 mutable 数据成员可以被修改。
mutable 的一个应用是:当实例成员函数的参数表后出现 const 时,该函数不能修改 this 对象
的非静态数据成员,但如果数据成员是 mutable 的,则该数据成员就可以被修改。mutable 不
能与 const、static 连用。
2. 类的实例成员指针和静态成员指针有什么不同?
参考答案
实例成员指针:是一个偏移量,不能移动和参与运算,需要结合对象或对象指针来使用。
静态成员指针:实际上是普通的指针,存放的是成员的物理地址,不需要结合对象使用。
3. 分析如下定义是否正确,并指出错误原因。
struct A {
char *a, b, *geta( );
char A::*p;
char *A::*q( );
char *(A::*r)( );
};
int main(void) {
A a;
a.p = &A::a;
a.p = &A::b;
a.q = &A::geta;
a.r = a.geta;
a.r = &a.geta;
a.r = &A::geta;
}
参考答案
void main(void) {
A a;
a.p = &A::a; //错:不能将&A::a的类型char *A::*转换为a.p的类型char A::*
a.p = &A::b; //对
a.q = &A::geta; //错:a.q是1个函数,不是函数指针
a.r = a.geta; //错:a.r是函数成员指针,a.geta既不是取函数geta的地址,也不是调用geta函数
a.r = &a.geta; //错:a.r是函数成员指针,&a.geta不是函数成员指针
a.r = &A::geta; //对
}
资源评论
StoneChan
- 粉丝: 27
- 资源: 321
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功