网站建设咨询推荐,企业管理培训课程表,建立网站需要多少钱多少钱28湖南岚鸿,cms系统推荐介绍 常成员是什么 1.常成员关键词为#xff1a;const 2.常成员有#xff1a;常成员变量、常成员函数、常成员对象 常成员有什么用 1.常成员变量#xff1a;用于在程序中定义不可修改内部成员变量的函数 2.常成员函数#xff1a;只能够访问成员变量#xff0c;不可以修改成…介绍 常成员是什么 1.常成员关键词为const 2.常成员有常成员变量、常成员函数、常成员对象 常成员有什么用 1.常成员变量用于在程序中定义不可修改内部成员变量的函数 2.常成员函数只能够访问成员变量不可以修改成员变量 (PS:凡是 mutable 修饰的成员变量依然能够修改该成员变量) 3.常成员对象只能调用它的常成员函数而不能调用该对象的普通成员函数(PS:只能调用常函数) 常成员变量怎么用 (1).常成员变量必须赋值且初始化后不能更改 (2).常成员变量赋值初始化 1.要么声明时赋值 2.要么初始化表时进行赋值常成员函数怎么用 (1).函数体前加上 const 例子const int foo(){}修饰 函数本身 (PS:只能够访问成员变量不可以修改成员变量) (2).函数体后 大括号前加上 const例子 int foo()const{}修饰 this指针 (PS:凡是 this 指向的成员变量都不可以修改只能访问)常成员对象怎么用 (1).常对象只能调用常函数 (2).被 const 修饰的对象对象指针 or 对象引用统称为“常对象” 源码
#includeiostream
#includestringusing namespace std;class Socre
{
public:Socre(int c) :Sum_socre(c), S_sumber(c)//通过初始化表赋值常变量{}//析构函数~Socre(){}//正常函数void foo(){cout 正常函数 endl;}//常函数void foo()const{cout 常函数 endl;}//常 this函数void Sfoo(int b)const{b 30;//此时b依然能修改//this-Sum_socre 80;//此时this-Sum_socre无法更改cout const Sum_socre this-Sum_socre endl;//this-S_sumber 会修改值一直1cout mutable S_sumber this-S_sumber endl;cout b b endl;}
private:const int Sum_socre;//成绩mutable int S_sumber;//凡是 mutable 修饰的成员变量依然能够修改该成员变量
};int main()
{cout -------------正常对象版本------------- endl;Socre sumber(50);sumber.Sfoo(100);//传入一个b值sumber.Sfoo(80);//传入一个b值sumber.Sfoo(60);//传入一个b值sumber.foo();//优先调用正常函数cout -------------常对象版本------------- endl;const Socre sumber2(50);sumber2.Sfoo(90);//传入一个b值sumber2.Sfoo(100);//传入一个b值sumber2.Sfoo(700);//传入一个b值sumber2.foo();//优先调用常函数system(pause);return 0;
}运行结果
-------------正常对象版本-------------
const Sum_socre 50
mutable S_sumber 51
b 30
const Sum_socre 50
mutable S_sumber 52
b 30
const Sum_socre 50
mutable S_sumber 53
b 30
正常函数
-------------常对象版本-------------
const Sum_socre 50
mutable S_sumber 51
b 30
const Sum_socre 50
mutable S_sumber 52
b 30
const Sum_socre 50
mutable S_sumber 53
b 30
常函数
请按任意键继续. . .笔记扩充
new 存储示意图 源码
#includeiostream
#includestringusing namespace std;class A
{
public:A(){ cout A构造 endl; }~A(){ cout A析构 endl; }};int main()
{A *pa new A[3];cout *((int*)pa-1) endl;//获取new空间大小delete[] pa;//此时会产生析构三次system(pause);return 0;
}