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

网站数据库空间广告设计与制作视频教程

网站数据库空间,广告设计与制作视频教程,门户网站开发过程,学校网站建设模板在C中#xff0c;成员变量和成员函数是分开存储的#xff0c;只有非静态成员变量才存储在类中或类的对象上。通过该类创建的所有对象都共享同一个函数#include iostream using namespace std;class Monster {public://成员函数不占对象空间#xff0c;所有对象共享同…在C中成员变量和成员函数是分开存储的只有非静态成员变量才存储在类中或类的对象上。通过该类创建的所有对象都共享同一个函数#include iostream using namespace std;class Monster {public://成员函数不占对象空间所有对象共享同一个函数Monster():m_monsterId(0){}//成员函数不占对象空间所有对象共享同一个函数Monster(const int monsterId):m_monsterId(monsterId){}//成员函数不占对象空间所有对象共享同一个函数Monster(const Monster m){m_monsterId m.m_monsterId;}//成员函数不占对象空间所有对象共享同一个函数~Monster(){}//静态成员函数存储在全局静态区不占对象空间static void setMonsterCounter(const int counter){ms_counter counter;}//静态成员函数存储在全局静态区不占对象空间static int getMonsterCounter(){return ms_counter;}private://静态成员变量存储在全局静态区不占对象空间static int ms_counter; //计数//非静态成员变量占对象空间int m_monsterId; //怪物id };int Monster::ms_counter 0;int main(int argc, char *argv[]) {cout sizeof(Monster) sizeof(Monster) endl;Monster m;cout sizeof(m) sizeof(m) endl;return 0; }在C中空类占用内存大小为一个字节因为即使是一个空对象也要分配存储空间来识别这个空对象所以C分配了一个字节大小的空间给每一个空对象。#include iostream using namespace std;class Monster {};int main(int argc, char *argv[]) {Monster m;cout 空类占用内存大小为 sizeof(Monster) endl;cout 空对象占用内存大小为 sizeof(m) endl;return 0; }C中成员变量和成员函数是分开存储的只有非静态成员才存储在类中或类的对象上。不管通过该类创建了多少对象该类的每一个非静态成员函数只有一份所有对象都同享非静态成员函数那么这些非静态成员函数是如何区分是哪个对象调用自己的呢C通过this指针解决这个问题。this指针的特点this指针隐含在每一个非静态成员函数内每一个非静态成员函数都隐含有一个this指针。当对象调用非静态成员函数时this指针指向该对象。this指针是是在非静态成员函数的开始前构造并在非静态成员函数的结束后清除的不需要声明直接使用即可。this指针的本质是指针常量存储了调用该非静态成员函数的对象的地址所以this指针的指向是不可以修改的。注意这里我们一直强调每一个非静态成员函数都隐含有一个this指针而静态成员函数的函数体内只能访问静态成员变量和静态成员函数不能访问非静态成员变量和非静态成员函数所以静态成员函数是没有this指针的。this指针的作用在类的非静态成员函数中形参和成员变量同名时可以通过this指针来指明是对象的成员还是形参名。在类的非静态成员函数中需要返回该对象时通过使用return *this; 返回该对象自身。#include iostream using namespace std;class Monster {public:Monster():monsterId(0){}//这里通过对象初始化列表的方式是可以区分:monsterId是成员变量(monsterId)是形参的//而且对象初始化列表中不能用:this-monsterId(monsterId)Monster(const int monsterId):monsterId(monsterId){}Monster(const Monster m):monsterId(m.monsterId){}~Monster(){}Monster getSelf(){return *this; //返回对象本身}// static Monster getSelfByStatic()// {// return *this; //错误非静态成员函数没有this指针// }void setMonsterId(const int monsterId){this-monsterId monsterId; //形参和成员变量同名所以需要用this指针区分不然编译器不知道monsterId是成员变量还是形参}int getMonsterId(){return monsterId;}private:int monsterId; };int main(int argc, char *argv[]) {Monster m(10001);cout 怪物id m.getMonsterId() endl;m.setMonsterId(10002);cout 怪物id m.getSelf().getMonsterId() endl;return 0; }注意通过对象初始化列表的方式是可以区分:monsterId是成员变量(monsterId)是形参的而且对象初始化列表中不能用:this-monsterId(monsterId)编译器会报错的//这里通过对象初始化列表的方式是可以区分:monsterId是成员变量(monsterId)是形参的 //而且对象初始化列表中不能用:this-monsterId(monsterId)编译器会报错的 Monster(const int monsterId):monsterId(monsterId) {}C中是允许空指针调用成员函数的这时this NULL所以在非静态成员函数中如果用到this指针应该在用到this指针前加以判断this指针是否为NULL。但是在程序设计的过程中我们应该尽量禁用用空指针调用成员函数稍微不注意可能会导致我们的程序出现崩掉的情况。const修饰的类成员常量成员变量在成员变量前用const修饰该的成员变量egconst int m_monsterId;。常量成员变量只能在构造函数中用初始化列表进行初始化并且初始化后不能再修改。常量成员函数在成员函数后加上const修饰的成员函数egvoid getMonsterId() const也叫常函数。常量成员函数不能修改普通的成员属性但常量成员函数可以对有mutable修饰的成员属性进行修改。常对象const修饰的对象叫常对象常对象只能调用常函数#include iostream using namespace std;class Monster {public:Monster():m_monsterId(0), m_name(怪物), m_blood(500){}Monster(const int monsterId, const string name, const int blood):m_monsterId(monsterId), m_name(name), m_blood(blood){}Monster(const Monster m):m_monsterId(m.m_monsterId), m_name(m.m_name), m_blood(m.m_blood){//m_name m.m_name; //错误常量成员属性只能用初始化列表进行初始化这句调用编译器会报错}~Monster(){}void setMonsterId(const int monsterId){m_monsterId monsterId;}int getMonsterId() const{//m_monsterId 0; //错误常函数不能修改普通成员变量的值return m_monsterId;}void setName(const string name){//m_name name; //错误m_name是常量成员属性不能修改}string getName() const{return m_name;}void setBlood(const int blood) const{m_blood blood; //正确常函数可以修改用mutable修饰的成员属性}int getBlood(){return m_blood;}int getCounter(){return ms_counter;}private:int m_monsterId; //怪物idconst string m_name; //怪物名字 常量成员属性mutable int m_blood; //血量static int ms_counter; }; int Monster::ms_counter 0;int main(int argc, char *argv[]) {Monster m1(10001, 雪女, 10000);cout 怪物id m1.getMonsterId() 怪物名字 m1.getName() 怪物血量 m1.getBlood() endl;const Monster m2(20001, 紫衣仙子, 20000);cout 怪物id m2.getMonsterId() endl; //正确常对象可以调用常函数//m2.setMonsterId(20002); //错误常对象不可以调用普通成员函数//m2.getCounter(); //错误常对象不可以调用静态成员函数return 0; }类的静态(static)成员和常量(const)成员是两个不同的概念我们不应该混淆类的静态成员static成员变量所有对象共享一份数据在编译阶段分配内存类内声明类外初始化有publicprotectedprivate访问权限static成员函数在成员函数前加 static所有对象共享一个函数静态成员函数的函数体内只能访问静态成员变量或静态成员函数不能访问非静态成员变量和非静态成员函数有publicprotectedprivate权限
http://www.w-s-a.com/news/83368/

相关文章:

  • 案例学 网页设计与网站建设百度竞价关键词出价技巧
  • 做公司网站要那些资料南雄网站建设
  • 自己做的网站发布到网上视频播放不了网页游戏奥奇传说
  • 网站效果用什么软件做品牌网站建设等高端服务
  • 四川省成华区建设局网站网站专业制作
  • 网站建设如何开票网站后台怎么做超链接
  • 教育网站设计方案建设网站技术公司电话号码
  • 建网站要定制还是第三方系统传奇网站模板psd
  • 免费搭建企业网站什么叫网站定位
  • 网站建设cms程序员培训班
  • 网站seo技术wordpress editor ios
  • 红酒网站设计成立公司需要哪些手续
  • 广州做网站哪个好网站建网站建设网站站网站
  • 如何快速提升网站pr短剧个人主页简介模板
  • 上海网站建设 永灿百度权重3的网站值多少
  • 公司展示网站模板模板工
  • 网站建设收费详情舟山公司做网站
  • 深圳宝安区住房和建设局网站html模板大全
  • 和田哪里有做网站的地方wordpress地址更改
  • 恒通建设集团有限公司网站企业网站百度指数多少算竞争大
  • 雅虎网站收录提交入口如何使用wordpress搭建网站
  • 微商城网站建设怎么样发稿是什么意思
  • dz建站与wordpress群晖做网站服务器速度快吗
  • 做手机网站的公司网站建设 app开发 图片
  • 网站开发技术背景介绍wordpress数据库重置密码
  • 开发建设网站的实施过程是一个logo设计品牌
  • 做360pc网站排名首页工程造价信息网官网首页
  • 产品销售网站模块如何设计大数据和网站开发
  • 现在帮别人做网站赚钱不济南做网站建设公司
  • 嘉兴网站建设哪家好最近三天的国际新闻大事