当前位置: 首页 > news >正文

同ip网站有什么危害像素人物制作网站

同ip网站有什么危害,像素人物制作网站,wordpress博客怎么写,大汉网站开发目录 C对象模型 类内的成员变量和成员函数分开存储 总结 this指针 概念 示例 用途 当形参和成员变量同名时 在非静态成员函数中#xff0c;如果希望返回对象本身 例子 空指针访问成员函数 示例 const修饰成员函数 常函数#xff08;const member function…目录 C对象模型 类内的成员变量和成员函数分开存储 总结 this指针 概念 示例 用途 当形参和成员变量同名时 在非静态成员函数中如果希望返回对象本身 例子 空指针访问成员函数 示例 const修饰成员函数 常函数const member function 常对象const object 关键字mutable C对象模型 是指描述C中对象在内存中的布局和组织方式的规范。它涉及到类的成员变量、成员函数以及继承关系等方面。 在C对象模型中一个类的对象通常由两部分组成成员变量和成员函数。 C对象模型描述了在C中对象的内存布局和组织方式。以下是一些关键概念 成员变量的布局成员变量按照声明的顺序在内存中排列。对于非静态成员变量每个对象都有其自己的独立拷贝。对于静态成员变量所有对象共享同一份拷贝。 成员函数的存储成员函数通常不直接存储在对象中而是存储在类的代码段中。每个成员函数只有一份实现在内存中共享。当调用成员函数时通过this指针来访问当前对象的成员。 this指针this指针是一个隐含的指向当前对象的指针。它允许在成员函数内部通过this-来访问当前对象的成员变量和成员函数。 继承关系的布局当一个类继承自另一个类时子类对象的内存布局包含了基类部分和派生类自身的部分。基类的成员变量按照声明顺序排列在子类对象的前部分。 虚函数表Vtable如果类中存在虚函数编译器会生成一个虚函数表。虚函数表是一个指针数组存储了虚函数的地址。每个对象中存在一个指向其对应类虚函数表的指针虚函数指针。 多重继承当一个类从多个基类派生时对象内存布局会根据继承顺序依次包含各个基类的部分。 需要注意的是C对象模型的具体实现因编译器而异。不同的编译器可能存在一些细微差异但大体上遵循了C标准对于对象模型的规定。了解对象模型对于理解C的底层运作机制和进行性能优化非常有帮助。 类内的成员变量和成员函数分开存储 成员变量在内存中按照定义的顺序排列每个成员变量在内存中占据一定的空间。其中基本数据类型的成员变量直接存储其值而对象类型的成员变量存储的是对象的地址。 成员函数则不直接存储在对象内存中而是存储在类的代码段中。每个成员函数只有一份被所有对象共享。当调用成员函数时通过this指针来访问当前对象的成员变量和调用其他成员函数。 总结 非静态成员变量占对象空间 静态成员变量不占对象空间 只有非静态成员变量才属于类的对象上 函数包括静态成员函数也不占对象空间所有函数共享一个函数实例 this指针 概念 this指针是C中的一个隐含指针它指向当前对象。它可以在类的非静态成员函数中使用用于访问当前对象的成员变量和成员函数。 具体来说当我们在类的成员函数内部使用成员变量或调用其他成员函数时编译器会将这些代码转换为使用this指针来访问。this指针是一个指向当前对象的常量指针它的类型是当前类的指针类型。 每一个非静态成员函数只会诞生一份函数实例也就是说多个同类型的对象会共用一块代码 通过this指针可以区分那个对象调用这一块代码。 this指针是隐含于每一个非静态成员函数内的一种指针 this指针不需要定义直接使用即可 对象指针访问属性要用  -  ,   例如this-x value等价于(*this).x value 示例 class MyClass { public:int x;void setX(int value) {this-x value; // 使用this指针访问成员变量}void printX() {std::cout x this-x std::endl; // 使用this指针访问成员变量}void callAnotherFunction() {this-printX(); // 使用this指针调用其他成员函数} };在上面的示例中setX()函数和printX()函数中使用了this指针来访问成员变量x。在setX()函数中this-x value等价于(*this).x value将传入的value赋值给当前对象的成员变量x。在printX()函数中使用this-x将当前对象的成员变量x输出到标准输出。 另外callAnotherFunction()函数中使用this指针调用printX()函数。this-printX()等价于(*this).printX()它调用了当前对象的printX()成员函数。 用途 当形参和成员变量同名时 在非静态成员函数中可以使用this指针来区分它们。this-age age表示将传入的参数值赋给当前对象的成员变量age。通过使用this指针我们明确指出要操作的是成员变量而不是形参。 在非静态成员函数中如果希望返回对象本身 可以使用return *this语句。这样可以实现链式调用即在一个对象上连续调用多个成员函数。 例子 class MyClass { public:int x;MyClass setX(int value) { // 返回对象本身的引用this-x value;return *this;}void printX() {std::cout x this-x std::endl;} };int main() {MyClass obj;obj.setX(5).printX(); // 链式调用return 0; }空指针访问成员函数 在C中空指针也可以调用成员函数但是需要注意使用到this指针时的判断以确保代码的健壮性和安全性。 当空指针调用成员函数时由于没有有效的对象实例this指针将为nullptr。如果在成员函数中没有使用this指针访问成员变量或调用其他成员函数则可以安全地使用空指针调用。 当成员函数中使用了this指针时就需要进行合适的判断来避免空指针解引用错误。 示例 #include iostreamclass MyClass { public:void memberFunction() {std::cout Inside memberFunction std::endl;} };int main() {MyClass* ptr nullptr;// 空指针调用成员函数ptr-memberFunction();return 0; }在上述代码中我们声明了一个名为MyClass的类其中有一个成员函数memberFunction()。在主函数中将一个空指针ptr初始化为nullptr。然后我们尝试使用空指针ptr来调用成员函数memberFunction()。尽管ptr是空指针但由于memberFunction()函数内部没有使用this指针访问成员变量或调用其他成员函数因此可以安全地运行该程序。输出结果为Inside memberFunction。 请注意在实际应用中应该始终确保指针是有效的以避免潜在的错误和崩溃。 const修饰成员函数 常函数const member function 常函数是指在成员函数的声明和定义的末尾加上const关键字。常函数承诺不会修改类的任何非静态成员变量。这意味着在常函数内部不能对非静态成员变量进行赋值操作或调用可能修改成员状态的非const函数。 class MyClass { public:void someFunction() const {// 在常函数中只能访问类的成员变量不能修改它们} };成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后在常函数中依然可以修改 常对象const object 常对象是指在对象声明之前加上const关键字从而将其声明为常对象。常对象的特点是其成员变量的值在创建后不能被修改并且只能调用常函数。 const MyClass obj;声明对象前加const称该对象为常对象 常对象只能调用常函数 关键字mutable 即使在常函数中普通的成员变量依然无法修改包括在常对象中。但是如果某个成员变量声明时使用了关键字mutable则可以在常函数中修改该成员变量的值。mutable关键字的作用是允许常函数改变被修饰的成员变量。 综上所述常函数和常对象的使用可以提高代码的安全性和可读性。 常函数用于声明不会修改类状态的函数 而常对象用于保护成员变量的不可修改性并限制只能调用常函数。 class Person { public:Person() {m_A 0;m_B 0;}//this指针的本质是一个指针常量指针的指向不可修改//如果想让指针指向的值也不可以修改需要声明常函数void ShowPerson() const {//const Type* const pointer;//this NULL; //不能修改指针的指向 Person* const this;//this-mA 100; //但是this指针指向的对象的数据是可以修改的//const修饰成员函数表示指针指向的内存空间的数据不能修改除了mutable修饰的变量this-m_B 100;}void MyFunc() const {//mA 10000;}public:int m_A;mutable int m_B; //可修改 可变的 };//const修饰对象 常对象 void test01() {const Person person; //常量对象 cout person.m_A endl;//person.mA 100; //常对象不能修改成员变量的值,但是可以访问person.m_B 100; //但是常对象可以修改mutable修饰成员变量//常对象访问成员函数person.MyFunc(); //常对象只能调用const的函数}int main() {test01();system(pause);return 0; }
http://www.w-s-a.com/news/354193/

相关文章:

  • 3d室内设计软件wordpress本地优化加速版
  • 南京高新区规划建设局网站石家庄哪里做网站比较好
  • 免费培训课程网站优化的方式
  • 做网站要固定电话在家自己做网站
  • 招聘网站开发视频新手如何做网站维护
  • flash 网站欣赏国外做的比较好的网站有哪些
  • 推广一个网站需要什么官网首页设计
  • 淘宝建设网站的理由企业官网建设哪家好
  • 青岛网站推wordpress主题切换
  • 天元建设集团有限公司资质郑州网站seo推广
  • 免费网站后台管理系统模板下载百度网盘app下载安装
  • 开封网站建设培训郑州高端网站建设哪家好
  • 东莞哪家做网站很有名的公司即墨专业医院网站制作公司
  • 做面食网站china cd wordpress
  • 门户网站 营销优秀建筑模型案例作品
  • 训做网站的心得体会范文中山市 有限公司网站建设
  • 服装电子商务网站建设过程与实现两学一做学习教育网站
  • 住房和城建设网站怎么用源码建站
  • 监理工程师证查询网站百度关键词优化软件网站
  • 关于建筑建设的网站asp网站建设报告书
  • 服务二级公司网站建设平台销售模式有哪些
  • 南昌县建设局网站微信分销小程序开发
  • 网站设计师需要什么知识与技能wordpress个性
  • 做茶叶网站的目的和规划有什么做照片书的网站
  • 开福区城乡建设局门户网站关键词挖掘查询工具爱站网
  • 网站建设全国排名沈阳seo按天计费
  • 成都公司网站设计无锡seo网站推广费用
  • 建网站平台要多少钱购物网站界面设计策划
  • 学完js了可以做哪些网站长沙建站官网
  • 怎么样做问卷网站多少钱英语