如室设计网站网站建设 素材
如室设计网站,网站建设 素材,天津网站设计哪家公司好,中国移动采购与招标网类和对象
类的一般形式 访问控制限定符
public 公有成员#xff0c;谁都可以访问protected 保护成员#xff0c;只有类自己和子类可以访问private 私有成员#xff0c;只有类自己可以访问
类和结构的访问控制限定符区别
类的缺省访问控制限定为私有(private)结构的缺省访…类和对象
类的一般形式 访问控制限定符
public 公有成员谁都可以访问protected 保护成员只有类自己和子类可以访问private 私有成员只有类自己可以访问
类和结构的访问控制限定符区别
类的缺省访问控制限定为私有(private)结构的缺省访问控制限定为公有(public)
封装
访问控制限定符仅作用于类而非作用于对象。 对不同成员的访问控制限定加以区分体现了C作为面向对象程序设计语言的封装特性。
对象创建过程
定义xxxx: 就是给xxx分配内存空间
Person p;该语句定义了变量p,且给p在栈分配了内存空间成员属性初值为随机数。
成员函数的this指针
C对象模型
同一个类的不同对象各自拥有一份独立的成员变量同一个类的不同对象彼此共享同一份成员函数哪个对象调用成员函数成员函数的this指针就指向哪个对象
C成员函数模型
( 除静态成员函数外)类的每个成员函数都有一个隐藏的指针型形参形参名为 this.this形参指向调用该成员函数的对象一般将其称之为this指针( 除静态成员函数外)在类的成员函数内部对所有成员的访问都是通过this指针进行的.
应用
多数情况下程序并不需要显式地使用this指针有时为了方便将类的成员变量与该类成员函数的参数取相同标识符这时在成员函数内部可通过this指针将二者加以区分返回基于this指针的自引用以支持串连调用
#include iostream
#include cstring
using namespace std;class Integer{
public:void setInfo(/* Integer* this */int i){this-i i; // 这里必须显式添加this (1)}void getInfo(/* Integer* this */){cout /*this-*/i endl; // 这里编译器会补this}Integer increment(/* Integer* this */){/*this-*/i; // 这里编译器会补thisreturn *this; // 返回基于this指针的自引用(这里必须自己显式写this) (2)}
private:int i; // m_i
};// 以上代码模拟类的实现者
// -----------------------
// 以下代码模拟类的使用者int main( void ) {Integer ix;ix.setInfo(1000);ix.getInfo();ix.increment().increment().increment(); // 串联调用ix.getInfo();return 0;
}
常对象和常函数
常对象 被const关键字修饰的对象、对象指针或对象引用统称为常对象
常函数 在类成员函数的形参表之后函数体之前加上const关键字则该成员函数的this指针即具有常属性这样的成员函数被称为常函数
原型相同的成员函数常版本和非常版本构成重载
非常对象优先选择非常版本如果没有非常版本也能选择常版本常对象只能选择常版本
在常函数内部无法修改成员变量的值除非该成员变量被mutable关键字修饰
// 常对象(被const修饰的对象、指针、引用)和非常对象(没有被const修饰的对象、指针、引用)
// 常函数(编译器补的this参数有const修饰)和非常对象(编译器补的this参数没有const修饰)
#include iostream
#include cstring
using namespace std;class Integer{
public:void setInfo(/* Integer* this */int i){ // 非常函数m_i i;}void getInfo(/* Integer* this */){ // 非常函数cout 非常函数getInfo: m_i endl;}void getInfo(/* const Integer* this */)const{ // 常函数const_castInteger*(this)-m_i 666;cout 常函数getInfo: m_i endl;}
private:/*mutable*/ int m_i;
};// 以上代码模拟类的实现者
// -----------------------
// 以下代码模拟类的使用者int main( void ) {Integer ix; // ix是非常对象Integer* pix ix; // pix是非常对象Integer rix ix; // rix是非常对象ix.setInfo(1000);ix.getInfo(); // getInfo(ix)--实参为Integer* 非常对象优先选择非常函数也可以选择常函数 const Integer cix ix; // cix是常对象const Integer* pcix cix; // pcix是常对象const Integer rcix cix; // rcix是常对象cix.getInfo(); // getInfo(cix)--实参是const Integer* 常对象只能选择常函数不能选择非常函数return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88934.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!