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

网站设计需要多久北京王府井书店网上商城

网站设计需要多久,北京王府井书店网上商城,国外免费wordpress空间,甜品网站网页设计代码文章目录 一、面向过程和面向对象的初步认识二、类的引入2.2 类的引入 三、类的访问限定符及封装3.3 访问限定符3.4 【面试题】C中struct和class的区别3.5 类的两种定义方式 四、封装【面试题】面向对象的三大特性 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储… 文章目录 一、面向过程和面向对象的初步认识二、类的引入2.2 类的引入 三、类的访问限定符及封装3.3 访问限定符3.4 【面试题】C中struct和class的区别3.5 类的两种定义方式 四、封装【面试题】面向对象的三大特性 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储方式猜测7.2 结构体内存对齐规则【面试题】 一、面向过程和面向对象的初步认识 C语言是面向过程的关注的是过程分析出求解问题的步骤通过函数调用逐步解决问题。 C是基于面向对象的关注的是对象将一件事情拆分成不同的对象靠对象之间的交互完成。 二、类的引入 C语言结构体中只能定义变量在C中结构体内不仅可以定义变量也可以定义函数。比如之前在数据结构初阶中用C语言方式实现的栈结构体中只能定义变量现在以C方式实现会发现struct中也可以定义函数。 这里就不介绍C语言的用法了 C兼容C之前写的结构体升级成了类我们来看下面的代码 typedef int DataType;struct Stack {// 成员函数void Init(size_t capacity 4){_array (DataType*)malloc(sizeof(DataType) * capacity);if (nullptr _array){perror(malloc申请空间失败);return;}_capacity capacity;_size 0;}void Push(const DataType data){// 扩容_array[_size] data;_size;}DataType Top(){return _array[_size - 1];}void Destroy(){if (_array){free(_array);_array nullptr;_capacity 0;_size 0;}}// 成员变量DataType* _array;size_t _capacity;size_t _size; };int main() {Stack s;s.Init(10);s.Push(1);s.Push(2);s.Push(3);cout s.Top() endl;s.Destroy();return 0; }上面结构体的定义在C中更喜欢用class关键字来代替。 下面就有类的定义以及使用了 2.2 类的引入 class className {// 类体由成员函数和成员变量组成 }; // 一定要注意后面的分号class为定义类的关键字ClassName为类的名字**{}**中为类的主体注意类定义结束时后面分号不能省略。 类体中内容称为类的成员类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。 如何写呢 我们可以这样定义定义一个日期类但是我们这里推荐名字加上一个_便于区分为什么呢 class Date {int year;int month;int day; };再来看下面的代码是不是就分不清楚了~~ class Date {void Init(int year,int month,int day){year year;month month;day day;}int year;int month;int day; };所以就要这样写才可以 class Date {void Init(int year,int month,int day){_year year;_month month;_day day;}int _year;int _month;int _day; };这个时候我们是不是可以使用这个类里的函数了~~ int main() {Date d1;d1.Init(2024, 1, 26);return 0; }我们使用发现是报错了这提示的是啥啊~ C提出了三种访问限定符接下来我们再来看一下 三、类的访问限定符及封装 3.3 访问限定符 C实现封装的方式用类将对象的属性与方法结合在一块让对象更加完善通过访问权限选择性的将其接口提供给外部的用户使用。 【访问限定符说明】 1. public修饰的成员在类外可以直接被访问 2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的) 3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止 4. 如果后面没有访问限定符作用域就到 } 即类结束。 5. class的默认访问权限为privatestruct为public(因为struct要兼容C) 注意访问限定符只在编译时有用当数据映射到内存后没有任何访问限定符上的区别 上面的代码就可以这样写了 class Date {// public公有,会一直修饰到结束或者遇到下一个限定符 public:void Init(int year,int month,int day){_year year;_month month;_day day;}int _year;int _month;int _day; }; int main() {Date d1;class Date d2; // 这样也是可以的d1.Init(2024, 1, 26);d2._day;return 0; }或者来看这个就算是改成struct也是一样的 那我再添加一个函数放到最上面上面他可以访问吗很显然是可以的因为没有访问限定符限制是定义的struct默认是公开的如果是class就是私有的 class就无法不多介绍~~ 假设一个类比较大需要进行声明和定义分离怎么办这里可以看到报错了原因是编译器搜索的时候是在默认和全局里搜索默认不会在类里面搜索搜索不到就报错了 这个时候加上一个::这里就好像命名空间域一样指定搜索这个时候加上了又报了一个错误我们之前讲过的缺省参数不能在声明和定义里同时给 再次改进后 优先会在指定域里面找找不到然后再从局部里找然后再从全局里找~~ 3.4 【面试题】C中struct和class的区别 问题C中struct和class的区别是什么 解答 C需要兼容C语言所以C中struct可以当成结构体使用。另外C中struct还可以用来定义类。和class定义类是一样的区别是struct定义的类默认访问权限是publicclass定义的类默认访问权限是private。注意在继承和模板参数列表位置struct和class也有区别后序给大家介绍。 3.5 类的两种定义方式 声明和定义全部放在类体中需注意成员函数如果在类中定义编译器可能会将其当成内联函数处理。 类声明放在**.h文件中成员函数定义放在.cpp**文件中注意 成员函数名前需要加类名:: 一般情况下更期望采用第二种方式 四、封装 【面试题】面向对象的三大特性 面向对象的三大特性封装、继承、多态。 C数据和方法都放到类里面C访问限定符去对成员进行限制想给你访问是公有不想给你访问是私有 在类和对象阶段主要是研究类的封装特性那什么是封装呢 封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行交互。 封装本质上是一种管理让用户更方便使用类。比如对于电脑这样一个复杂的设备提供给用户的就只有开关机键、通过键盘输入显示器USB插孔等让用户和计算机进行交互完成日常事务。但实际上电脑真正工作的却是CPU、显卡、内存等一些硬件元件。 对于计算机使用者而言不用关心内部核心部件比如主板上线路是如何布局的CPU内部是如何设计的等用户只需要知道怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时在外部套上壳子将内部实现细节隐藏起来仅仅对外提供开关机、鼠标以及键盘插孔等让用户可以与计算机进行交互即可。 在C语言中实现封装可以通过类将数据以及操作数据的方法进行隐藏对象内部实现细节控制哪些方法可以在类外部直接被使用 五、类的作用域 类定义了一个新的作用域类的所有成员都在类的作用域中。在类体外定义成员时需要使用 ::作用域操作符指明成员属于哪个类域。 class Person { public:void PrintPersonInfo(); private:// 这个是声明char _name[20];char _gender[3];int _age; }; // 这里需要指定PrintPersonInfo是属于Person这个类域 void Person::PrintPersonInfo() {cout _name _gender _age endl; }六、类的实例化 用类类型创建对象的过程称为类的实例化 类是对对象进行描述的是一个模型一样的东西限定了类有哪些成员定义出一个类并没有分配实际的内存空间来存储它比如入学时填写的学生信息表表格就可以看成是一个类来描述具体学生信息。一个类可以实例化出多个对象实例化出的对象 占用实际的物理空间存储类成员变量 int main() {Person._age 100; // 编译失败error C2059: 语法错误:“.”return 0; }类里面定义的成员是声明是没有空间的 写成这样实例化就可以了 Person类是没有空间的只有Person类实例化出的对象才有具体的年龄。 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子类就像是设计图只设计出需要什么东西但是并没有实体的建筑存在同样类也只是一个设计实例化出的对象才能实际存储数据占用物理空间 七、类对象模型 问题类中既可以有成员变量又可以有成员函数那么一个类的对象中包含了什么如何计算一个类的大小 7.1 类对象的存储方式猜测 对象中包含类的各个成员 缺陷每个对象中成员变量是不同的但是调用同一份函数如果按照此种方式存储当一个类创建多个对象时每个对象中都会保存一份代码相同代码保存多次浪费空间。那么如何解决呢 代码只保存一份在对象中保存存放代码的地址 只保存成员变量成员函数存放在公共的代码段 问题对于上述三种存储方式那计算机到底是按照那种方式来存储的 我们再通过对下面的不同对象分别获取大小来分析看下 class Date {void Init(int year, int month, int day){_year year;_month month;_day day;}int _year;int _month;int _day; };int main() {Date d1;cout sizeof(d1) endl; }可以清楚的看到这就是三个成员的大小而函数是没有算进去的 结论一个类的大小实际就是该类中”成员变量”之和当然要注意内存对齐注意空类的大小【与C语言一样】空类比较特殊编译器给了空类一个字节来唯一标识这个类的对象。 我们再次回忆一下 7.2 结构体内存对齐规则 第一个成员在与结构体偏移量为0的地址处。其他成员变量要对齐到某个数字对齐数的整数倍的地址处。 注意对齐数 编译器默认的一个对齐数 与 该成员大小的较小值。VS中默认的对齐数为8结构体总大小为最大对齐数所有变量类型最大者与默认对齐参数取最小的整数倍。如果嵌套了结构体的情况嵌套的结构体对齐到自己的最大对齐数的整数倍处结构体的整 体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍。 【面试题】 结构体怎么对齐 为什么要进行内存对齐如何让结构体按照指定的对齐参数进行对齐能否按照3、4、5即任意字节对齐什么是大小端如何测试某台机器是大端还是小端有没有遇到过要考虑大小端的场景 上面的面试题就需要大家认真思考一下详细学到现在的烙铁已经知道了之后我会放出答案~~
http://www.zqtcl.cn/news/967265/

相关文章:

  • 松江网站建设培训手机网站你们
  • 荆州网站建设 众火网北京小客车指标调控管理信息系统
  • 域名和网站一样吗自己开发小程序要多少钱
  • 咨询公司网站源码手机优化软件哪个好用
  • 行业网站模板小型影视网站源码
  • 湖北网站建站系统哪家好微信小程序怎么注销账号
  • 温州网站推广公司沈阳网站建设服务电话
  • 2019年的阜南县建设修路网站洛阳哪里有做网站的
  • 家里电脑可以做网站服务器吗佛山网络公司哪家最好
  • 做网站属于无形资产还是费用网站制作二维码
  • ps为什么做不了视频网站最近做网站开发有前途没
  • 平面设计师参考网站做网站建设推广好做吗
  • 网站被别的域名绑定泰安做网站网络公司
  • 建设部网站业绩如何录入免费素材图片下载
  • 佛山美容网站建设如何有效的推广宣传
  • 网站全屏轮播怎么做nginx 代理 wordpress
  • 海淀公司网站搭建二级目录怎么做网站
  • 石家庄定制网站建设凡科建站做的网站收录慢吗
  • 海口企业自助建站品牌建设三年行动方案
  • 网站建设流程平台域名分析网站
  • 旅游类网站如何做推广随机网站生成器
  • 竖导航网站做网站被坑
  • 散文古诗网站建设目标做公司网站要钱吗
  • 营销网站建设规划小浪底水利枢纽建设管理局网站
  • 建站的目的网站的月度流量统计报告怎么做
  • 网站备案添加域名拼多多代运营公司十大排名
  • 网站访客qq获取系统 报价客户管理系统入口
  • 院网站建设情况报告怎么在虚拟主机上建网站
  • 厦门网站建设系统鞍山百度网站怎么制作
  • html5建设网站app开发公司不退款该怎么投诉