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

网站集约化建设的优势盐城网站开发厂商

网站集约化建设的优势,盐城网站开发厂商,wordpress ssl 慢,仓山区建设局招标网站1.面向过程和面向对象初步认识 C语言是面向过程的#xff0c;关注的是过程#xff0c;分析出求解问题的步骤#xff0c;通过函数调用逐步解决问题。 例如手洗衣服 C是基于面向对象的#xff0c;关注的是对象#xff0c;将一件事情拆分成不同的对象#xff0c;靠对象之间…1.面向过程和面向对象初步认识 C语言是面向过程的关注的是过程分析出求解问题的步骤通过函数调用逐步解决问题。 例如手洗衣服 C是基于面向对象的关注的是对象将一件事情拆分成不同的对象靠对象之间的交互完成。 例如用洗衣机洗衣服 总共有四个对象人、衣服、洗衣粉、洗衣机。 整个洗衣服的过程人将衣服放进洗衣机、倒入洗衣粉启动洗衣机洗衣机就会完成洗衣过程并且甩干。 衣服、洗衣粉、洗衣机四个对象之间交互完成的人不需要关整个过程主要是新洗衣机具体是如何洗衣服的是如何甩干的。 2.类的引入 C语言结构体中只能定义变量在C中结构体内不仅可以定义变量也可以定义函数。比如:之前在数据结构初阶中用C语言方式实现的栈结构体中只能定义变量现在以C方式实现会发现struct中也可以定义函数。 struct在C中升级成了类里面有成员函数和成员变量  C类名就是类型。 再也不需要在struct里面定义函数了在类里面定义就可以。 #includeiostreamusing namespace std;struct Stack { public:void Init(){_a nullptr;_top _capacity 0;}void Push(int x){//...}private:int* _a;int _top;int _capacity; };int main() {Stack st;st.Init();st.Push(1);st.Push(2); } 有了类和对象 以后再也不用像C语言害怕发生命名函数冲突 比如写栈的初始化 插入 销毁等等函数声明和函数定义都要加上相对应实现类型名字栈、队列、链表等等。有了C以后再也不这样直接在类里面定义在main函数里面引用使用即可。 C语言是结构体和函数定义分离 struct Stack {int* a;int top;int capacity; };void StackInit(struct Stack*ps); void StackPush(struct Stack*ps,int x);int main() {struct Stack st;StackInit(st);StackPush(st, 1);StackPush(st, 2); } 而C兼容C语言 strcut所有玩法 再也不用typedef了类名就是类型。 #includeiostreamusing namespace std;struct Stack { public:void Init(){_a nullptr;_top _capacity 0;}void Push(int x){//...}private:int* _a;int _top;int _capacity; }; 3.类的定义 在C中struct类更喜欢用class代替。 class className {类体由成员函数和成员变量组成 }; 一定要注意后面的分号 class为定义类的关键字ClassName为类的名字{}中为类的主体注意类定义结束时后面分号不能省略。  类体中内容称为类的成员: 类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。 #includeiostreamusing namespace std;class Stack { public:void Init(){_a nullptr;_top _capacity 0;}void Push(int x){//...}private:int* _a;int _top;int _capacity; };int main() {Stack st;st.Init();st.Push(1);st.Push(2); } 类的两种定义方式 1.声明和定义全部放在类体中需注意: 成员函数如果在类中定义编译器可能会将其当成内联函数处理。 #includeiostreamusing namespace std;class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout _year - _month - _day endl;}private://只是声明int _year;int _month;int _day; };int main() {Date d1;Date d2;d1.Init(2023, 10, 28);return 0; } 没有call指令了被当成内联函数展开了。  2.类声明放在.h文件中成员函数定义放在.cpp文件中注意: 成员函数名前需要加类名:: Date.h #pragma once #includeiostreamusing namespace std;class Date { public:void Print();private:int _year;int _month;int _day; };Date.cpp #includeDate.hvoid Date::Print() {cout _year - _month _ _day endl; }test.cpp #includeDate.h int main() {Date d1;d1.Print(); } 一般情况下更期望采用第二种方式。注意: 我为了方便演示使用方式一定义类大家后面敲代码或者工作中尽量使用第二种。  成员变量命名规则的建议 #includeiostreamusing namespace std;class Date { public:void Init(int year, int month, int day){是形参还是成员变量year year;month month;day day;}private:int year;int month;int day; }; 初始化这里是成员变量year呢还是形参year呢 答案是形参 因为局部优先 相当于形参给自己赋值没有任何实质性改变。 d1里面是随机值。 为了区分成员变量和形参C一般在成员变量名称前面加个下划线_或者在后面加个下划线_,只要你自己能分得清成员变量和形参你随便给符号或者字母但推荐使用前面加个下划线_用简洁又高效辨别成员变量和形参。 #includeiostreamusing namespace std;class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}private:int _year;int _month;int _day; }; 类的访问限定符及封装 访问限定符 C实现封装的方式: 用类将对象的属性与方法结合在一块让对象更加完善通过访问权限选择性的将其接口提供给外部的用户使用。 访问限定符说明 1.public修饰的成员在类外可以直接被访问。 2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)。 3.访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止。 4.如果后面没有访问限定符作用域就到了即类结束。 5.class的默认访问权限为privatestruct为public(因为struct要兼容C)   5.类的作用域 类定义了一个新的作用域类的所有成员都在类的作用域中。在类体外定义成员时需要使用 ::作用域操作符指明成员属于哪个类域。 一般在C中{}里面都能算作作用域。 一般在声明和定义分离时使用域作用限定符在类里面的函数相关的定义。 6.类的实例 用类类型创建对象的过程称为类的实例化。 1.类是对对象进行描述的是一个模型一样的东西限定了类有哪些成员定义出一个类并没有分配实际的内存空间来存储它比如:入学时填写的学生信息表表格就可以看成是类来描述具体学生信息。 2.一个类可以实例化出多个对象实例化出的对象占用实际的物理空间存储类成员变量 类和对象的关系是一对多的。 把类比作楼房图纸 对象是根据图纸已经创建出来的高楼大厦。 所以类里面的成员变量只是设计出了构图 没有实体建筑形成。 实例化的对象才能存储数据占有物理空间。 7.类的对象大小的计算 如何计算类对象的大小 #includeiostreamusing namespace std;class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}private://只是声明int _year;int _month;int _day; };int main() {Date d1;//定义了一个对象cout sizeof(d1) endl;} 答案是12。 为什么会出现是12呢类里面既有成员变量又有成员函数那么一个类的对象中包含了什么 如果计算类的大小呢 当我通过调试查看反汇编时看到了d1和d2调用是同一个地址的函数。  缺陷:每个对象中成员变量是不同的但是调用同一份函数如果按照此种方式存储当一个类创建多个对象时每个对象中都会保存一份代码相同代码保存多次浪费空间。那么如何解决呢?  C采用了只保存成员变量成员函数放在公共代码段 比如我们为了让小区的人打上篮球有必要给每家每户建造一个私人篮球场吗 显然是不符合现实的而且会造成资金浪费。 所以我们为了让小区的人打上篮球只要在公共区域打造一个篮球场提供给小区的人们娱乐就ok。 C也效仿了把成员函数放到公共代码段当成员变量去找成员函数定义就去公共代码区去找节省空间。 我们再实验几个实验样例 空类里面既没有成员变量又没有成员函数 #includeiostreamusing namespace std;class B {}; int main() {cout sizeof(B) endl;} 无成员变量的类对象大小开辟一个字节这个字节不存储数据。  #includeiostreamusing namespace std;class B {}; int main() {B b1;B b2;cout sizeof(B) endl;cout b1 endl;cout b2 endl;} 为了标识定义的对象曾经存在过就会开辟一个字节来证明。 类里面既有成员变量又有成员函数 class A { public:void f(){} private:int _a; };int main() {cout sizeof(A) endl;} 类里面只有成员函数 class A { public:void f(){} };int main() {cout sizeof(A) endl; 结论:一个类的大小实际就是该类中”成员变量”之和当然要注意内存对齐注意空类的大小空类比较特殊编译器给了空类一个字节来唯一标识这个类的对象。  8.类成员函数的this指针 1.this指针的引出 #includeiostreamusing namespace std;class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout _year - _month - _day endl;}private://只是声明int _year;int _month;int _day; };int main() {Date d1;Date d2;d1.Init(2023, 10, 28);d2.Init(2023, 10, 29);d1.Print();d2.Print();return 0; }Date类中有两个成员函数Init和Print()函数体中没有关于不同对象的区分那么当d1调用函数Init和Print()时所调函数是怎么知道是d1 对象而不是d2对象呢 C中通过引入this指针解决该问题即: C编译器给每个非静态的成员函数”增加了一个隐藏的指针参数让该指针指向当前对象(函数运行时调用该函数的对象)在函数体中所有“成员变量的操作都是通过该指针去访问。 只不过所有的操作对用户是透明的即用户不需要来传递编译器自动完成。 编译器实际完成的 this指针相关的实参和形参——不能显示的写  否则编译器会报错 运行不了 2.this的特性 1.this指针的类型: 类类型* const即成员函数中不能给this指针赋值。 2.只能在“成员函数”的内部使用 3.this指针本质上是“成员函数”的形参当对象调用成员函数时将对象地址作为实参传递给this形参。所以对象中不存储this指针。 4.this指针是”成员函数”第一个隐含的指针形参一般情况由编译器通过ecx寄存器自动传递不需要用户传递 可以看见this指针地址跟d1d2都一样可以根据d1对象的地址通过传实参给this指针做形参。
http://www.dnsts.com.cn/news/87389.html

相关文章:

  • 上海中国建设银行招聘信息网站本地域名服务器
  • 中山网站建设备案爱站网络挖掘词
  • 品牌型网站建设哪家好商务网站开发的基本原则
  • 网站建设为风险分析固始县住房和城乡规划建设局网站
  • 赣州深科网站建设应用商店正版下载安装
  • 如何做电视剧的短视频网站wordpress get_terms 排序
  • 郑州市建设劳务服务网站高端网页定制
  • 做视频大赛推广的网站企业网站管理系统破解版
  • 动静分离网站架构网页制造工具
  • 南昌专业做网站的google下载官网
  • 网站的推广方案有哪些手机网站 像素
  • 多网站怎么做seo网络推广平台哪家公司最好
  • 建设部二级结构工程师注销网站潍坊建站公司
  • 建设银行网站查询房贷信息查询个人crm
  • 网站建设 业务网站怎么seo
  • 网站广告图片在线制作asp.ne手机触摸网站开发
  • 肇庆中小企业网站制作wordpress虾米音乐插件
  • 西安个人网站建设珠海专业网站制作平台
  • wordpress英文站源码免费做彩页网站
  • 县城做二手车网站莆田 网站建设
  • 网站网络推广推广网站开发周期是什么意思
  • 网页和网站的不同国家最新防疫政策
  • 网站建设合同是否交纳印花税宜昌市城市建设学校网站
  • uc做购物网站网站推广公司傻大白
  • 做服装商城网站公司网站制作有哪些
  • 做企业的网站申请域网站
  • 大理做网站惠民建设局网站是哪个
  • 东莞网站优化成都网页平面设计培训班
  • 精通网站开发书籍wordpress 百度分享按钮
  • 河南网站排名优化哪家好企业网站 留言板