当前位置: 首页 > 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.hkea.cn/news/14503058/

相关文章:

  • 哪里建设品牌网站自己设计服装的app免费
  • 福州建设厅网站自建论坛要多少钱
  • 分析网站建设流程网站综合排名信息查询
  • 网站建设模板 源码 特效成都快速做网站
  • 老网站改版启用二级域名山东手机网站建设报价
  • 高端网站建设公司名称光谷软件园企业网站建设公司
  • 怎么做网页关联小程序廊坊首位关键词优化电话
  • 黄冈网站建设与推广哪家好长沙seo外包优化
  • 在湖南建设人力资源网站技术支持 滕州网站建设
  • 搭建论坛网站使用的系统yw开头的网络黄页
  • 网站开发项目架构wordpress登录页面logo删除
  • 猎头公司网站建设怎么建网站新手入门
  • 商业网站初期建设资金预算wordpress菜单锚点
  • 网站开发初级技术人员网站程序开发外包
  • 长春建一个网站大概要多少钱公司做网站
  • 法国化妆品进口报关做网站深圳网络安全公司排名
  • 网站找建站公司头条新闻 免费下载
  • 网站个性化设计链接买卖是什么意思
  • 办个网站卖什么好处如何免费做视频二维码永久
  • 网站制作价格低有什么做外贸的网站
  • 推广网站是什么意思南昌住房城市建设支行官方网站
  • 太原网站如何制作wordpress链接分类目录
  • 最新网站建设软件百度seo网站在线诊断
  • 网页制作与网站建设在线作业网站模板红黑
  • 网站开发颜色赣州广播电视台
  • 网站建设与管理的发展如何进行网站推广?网站推广的基本手段有哪些
  • 深圳哪里网站制作晟合建设集团网站
  • 开网站做备案需要什么资料网上商城电商项目的管理步骤
  • 微信如何做积分商城网站传奇怎么做充值网站
  • 自己建设一个网站步骤江门网站上排名