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

重庆网站设计开发企业网站seo公司

重庆网站设计开发,企业网站seo公司,怎么做网站收录,天津建设工程信息网报名目录 1.面向过程与面向对象 c语言的视角#xff1a; c的视角 2. 类的引入 3. 类的定义 3.1 类的两种定义方式 3.2 成员变量如何命名 4. 类的访问限定符与封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7. 类对象模型 7.1 怎么计算一个类对象的…目录 1.面向过程与面向对象 c语言的视角 c的视角  2. 类的引入  3. 类的定义  3.1 类的两种定义方式 3.2 成员变量如何命名 4. 类的访问限定符与封装 4.1 访问限定符  4.2 封装 5. 类的作用域 6. 类的实例化  7. 类对象模型  7.1 怎么计算一个类对象的大小  7.2 类对象存储的方式 7.3 结构体内存对齐规则 8. this指针 8.1 this指针的引出  8.2 this指针的特性  结语 1.面向过程与面向对象 c语言与c分别是面向过程与面向对象的拥护者。   c语言是面向过程的关注的是解决问题的过程分解求解步骤通过函数调用逐步解决问题。   C是基于面向对象的关注的是对象将一件事情拆分成不同的对象靠对象之间的交互完成。 我们来看看同一事件在面向过程与面向对象的眼里究竟是怎样的。以洗衣服为例。  c语言的视角 c的视角  2. 类的引入  在c语言中自定义类型struct结构体只能定义变量但在c中结构体不但能定义变量还能定义函数。 在c中将结构体称为类其关键字为class但同时兼容c语言的struct 它们之间的区别在后面会讲到。 3. 类的定义  class className { // 类体由成员函数和成员变量组成 }; // 一定要注意后面的分号 class是c定义类的关键字className是类的名字{ } 为类的主体。注意{ } 后的分号。 { } 中的内容称为类的成员其内定义的变量称为类的属性或成员变量函数则称为方法或成员函数。  3.1 类的两种定义方式 1.声明与定义全部放入类体内 (如果函数定义在类内则编译器有可能将函数当作内联函数处理) 。 2. 声明与定义分离声明在类内放入 .h 文件定义在类外放入 .cpp 文件。  我们上代码来看看 //声明与定义全部放在类体内 class Person { public:void ShowInfo(){cout name: _name age: _age endl;}char* _name;int _age; }; 这里声明与定义分离为了方便我将他们定义在了同一文件内。  //声明与定义分离 class Person { public:void ShowInfo();char* _name;int _age; };#includePerson.h void Person::ShowInfo() {cout name: _name age: _age endl; } 注意下图中圈出来的地方成员函数定义在类外时需要在函数名前用域作用符连接类名。 3.2 成员变量如何命名 我们看下面这段有关日期类的代码 class Date { public:void Init(int year, int month, int day){year year;month month;day day;}int year;int month;int day; }; 这种代码不仅可读性差还可能会造成歧义因此一般建议成员变量的命名要与正常变量名做区别比如在成员变量名前加_或m_。代码如下 class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}int _year;int _month;int _day; }; 4. 类的访问限定符与封装 c实现封装的方式用类将对象的属性与方法结合在一起通过访问权限选择性的将其接口提供给外部使用。 那么是如何实现访问限定的呢 这个就要靠访问限定符了。  4.1 访问限定符  【访问限定符说明】 1. public修饰的成员在类外可以直接被访问 2. protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的) 3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止 4. 如果后面没有访问限定符作用域就到 } 即类结束。 5. class的默认访问权限为privatestruct为public(因为struct要兼容C) 注意访问限定符只在编译时有用当数据映射到内存后没有任何访问限定符上的区别  在这里我们就可以解答struct与class区别的问题了。 C需要兼容C语言所以C中struct可以当成结构体使用。另外C中struct还可以用来 定义类。和class定义类是一样的区别是struct定义的类默认访问权限是publicclass定义的类默认访问权限是private。注意在继承和模板参数列表位置struct和class也有区别后序给大家介绍。 4.2 封装 面向对象有三大特性封装、继承和多态。当然并不代表只有这三大特性哦。 我们先来学习封装那么什么是封装呢 封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行交互。封装本质上是一种管理让用户更方便使用类。 比如对于电脑这样一个复杂的设备提供给用户的就只有开关机键、通过键盘输入显示器USB插孔等让用户和计算机进行交互完成日常事务。但实际上电脑真正工作的却是CPU、显卡、内存等一些硬件元件 对于计算机使用者而言不用关心内部核心部件比如主板上线路是如何布局的CPU内部是如何设计的等用户只需要知道怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时在外部套上壳子将内部实现细节隐藏起来仅仅对外提供开关机、鼠标以及键盘插孔等让用户可以与计算机进行交互即可。 在C语言中实现封装可以通过类将数据以及操作数据的方法进行有机结合通过访问权限来隐藏对象内部实现细节控制哪些方法可以在类外部直接被使用。 5. 类的作用域 类定义了一个新的作用域类的所有成员都在类的作用域中。在类体外定义成员时需要使用 ::作用域操作符指明成员属于哪个类域。  比如下面这段代码 class Person { public:Person(char* name,int age10){_name name;_age age;}void showinfo(); private:char* _name;int _age; };void Person::showinfo() {cout _name _age endl; }int main() {char name[] 张三;Person zs(name, 20);zs.showinfo();return 0; } 这里需要用域作用符指明类域。  6. 类的实例化  用类类型创建对象的过程称为类的实例化 1 . 类是对对象进行描述的是一个模型一样的东西限定了类有哪些成员定义出一个类并没有分配实际的内存空间来存储它 2 . 一个类可以实例化出多个对象实例化出的对象占用实际的物理空间存储类成员变量Person类是没有空间的只有Person类实例化出的对象才有具体的年龄。 3 . 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子类就像是设计图只设计出需要什么东西但是并没有实体的建筑存在同样类也只是一个设计实例化出的对象才能实际存储数据占用物理空间。 7. 类对象模型  7.1 怎么计算一个类对象的大小  class A { public:A(int a 10, int b 20){_a a;_b b;} private:int _a;int _b; }; 我们可以看到在A类中既有成员变量也有成员函数那么我们要怎样计算他的大小呢 7.2 类对象存储的方式 我们用下面的代码做一个实验来看看类对象是怎么存储的。  class C//只有成员变量 { private:int _f;int _y; };class D//空类 {};class E//只有成员函数 { public:void showinfo(){cout D endl;} }; int main() {cout sizeof(C): sizeof(C) endl;cout sizeof(D): sizeof(D) endl;cout sizeof(E): sizeof(E) endl;return 0; } 由此可见一个类的大小实际就是该类中”成员变量”之和当然要注意内存对齐 注意空类的大小空类比较特殊编译器给了空类一个字节来唯一标识这个类的对象。 那么对象是如何调用成员函数的呢 答案就是成员函数保存在公共的代码段内谁有需求谁就调用。 7.3 结构体内存对齐规则 1. 第一个成员在与结构体偏移量为0的地址处。 2. 其他成员变量要对齐到某个数字对齐数的整数倍的地址处。 注意对齐数 编译器默认的一个对齐数 与 该成员大小的较小值。VS中默认的对齐数为8。 3. 结构体总大小为最大对齐数所有变量类型最大者与默认对齐参数取最小的整数倍。 4. 如果嵌套了结构体的情况嵌套的结构体对齐到自己的最大对齐数的整数倍处结构体的整体大小就是所有最大对齐数含嵌套结构体的对齐数的整数倍 这一点与c语言结构体对齐内容相同有需要的朋友可以看我的这篇文章。 结构体的相关知识https://mp.csdn.net/mp_blog/creation/editor/133279934 8. this指针 8.1 this指针的引出  我们先简单实现一个日期类 class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void showinfo(){cout _year / _month / _day endl;}private:int _year;int _month;int _day; };int main() {Date d1;d1.Init(2024, 2, 1);d1.showinfo();Date d2;d2.Init(1997, 1, 1);d2.showinfo();return 0; } 在上面日期类代码中我们实现了两个对象的初始化与打印操作。那么问题来了我们可以看到Init() 与 showinfo() 两个函数并没有传入对象的参数那么函数是怎样分辨出应该对哪个对象进行操作呢 C中通过引入this指针解决该问题 C编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数让该指针指向当前对象(函数运行时调用该函数的对象)在函数体中所有“成员变量”的操作都是通过该指针去访问。只不过所有的操作对用户是透明的即用户不需要来传递编译器自动完成。 8.2 this指针的特性  1. this指针的类型类类型* const即成员函数中不能给this指针赋值。 2. 只能在“成员函数”的内部使用 3. this指针本质上是“成员函数”的形参当对象调用成员函数时将对象地址作为实参传递给 this形参。所以对象中不存储this指针。 4. this指针是“成员函数”第一个隐含的指针形参一般情况由编译器通过寄存器自动传 递不需要用户传递 。 结语 都看到这里了奖励自己看个段子吧 欢迎大佬们指正
http://www.zqtcl.cn/news/151988/

相关文章:

  • 网站开发岗位要求服务好的做培训网站
  • 宁波制作网站企业有哪些学网页设计需要什么学历
  • 网站建设公司墨子网络百度域名续费
  • 琪觅公司网站开发中文网页开发工具
  • 教育网站制作设计成都网络营销公司
  • 怎么查看一个网站页面的seo优化情况网站建站建设首选上海黔文信息科技有限公司2
  • 威海网站建设价格深圳优美网络科技有限公司
  • 做网站用什么系统建设网站投资多少
  • 凡科建站官网 网络服务抚顺 网站建设
  • 学校网站的建设方案西安企业seo外包服务公司
  • 建设租车网站深圳ww
  • 推广网络网站潜江资讯网一手机版
  • 凡科网站自己如何做毕设 做网站
  • 一起做网站逛市场百度权重查询网站
  • 专业网站优化推广网站核查怎么抽查
  • 牡丹江站salong wordpress
  • 网站建设公司做网站要多少费用有哪些外国网站国内可以登录的
  • 天津建站平台网页制作免费的素材网站
  • 建设网站需要专业哪个企业提供电子商务网站建设外包
  • 公司网站建设及维护网站建设思维
  • 那个网站可以学做西餐17做网站广州沙河
  • 品牌网站建设哪里好京东网站建设案例
  • 亚马逊海外版网站深圳市工商注册信息查询网站
  • 新乐做网站优化网站上漂亮的甘特图是怎么做的
  • 新网站应该怎么做seo品牌推广方案思维导图
  • 想要网站导航推广页浅谈中兴电子商务网站建设
  • 免费引流在线推广成都网站优化费用
  • 老河口市网站佛山市点精网络科技有限公司
  • word模板免费网站seo引擎优化是做什么的
  • 办网站怎么赚钱鄠邑建站 网站建设