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

目前比较流行的公司网站建站技术海口 网站制作公司

目前比较流行的公司网站建站技术,海口 网站制作公司,公司网站实名认证,app地推网目录 1.类的引入 2.类的定义 3.类的访问限定符 4.类的作用域 5. 类对象的存储方式 6. this指针 6.1 this指针的引入 6.2 this指针的特性 6.3有意思的面试题 1.类的引入 C语言struct 结构体中只能定义变量#xff0c;而C中可以定义函数。 struct Date {void Init(int… 目录 1.类的引入 2.类的定义 3.类的访问限定符 4.类的作用域 5. 类对象的存储方式 6. this指针 6.1 this指针的引入 6.2 this指针的特性 6.3有意思的面试题 1.类的引入 C语言struct 结构体中只能定义变量而C中可以定义函数。 struct Date {void Init(int year 2023, int month 12, int day 1){_year year;_month month;_day day;}int _year;int _month;int _day; }; 就像这样一个日期结构体可以在内部定义函数这就是一个类。在C中更喜欢用class来定义类。 2.类的定义 class className //指定想要的类的名字 {// 类体由成员函数和成员变量组成 };  // 一定要注意后面的分号 这 就是类的定义方式。类体中内容称为类的成员类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。 类中的函数有两种定义方式 1.直接在类中定义函数但需要注意这样编译器可能将该函数视为内联函数。 2.类中函数声明在类外定义函数。在类外定义函数需要注意成员函数名前加上类名。 struct Date {void Init(int year 2023, int month 12, int day 1)int _year;int _month;int _day; };//注意成员函数名前加上类名 void Date::Init(int year 2023, int month 12, int day 1) {_year year;_month month;_day day; } 3.类的访问限定符 访问限定符会对访问类进行的操作进行限制有三个访问限定符public公有、private私有、protected保护 具体用法如下 class Date { public:void Init(int year 2023, int month 12, int day 1){_year year;_month month;_day day;} private: int _year;int _month;int _day; }; 这样外部只能访问Init这个成员函数而不能访问到类中的三个成员变量。 目前可以认为private和protected区别不大。 需要注意的是class默认访问权限是private而struct默认访问权限是public为了兼容C 访问限定符的作用范围是到下一个访问限定符或 } 为止。 访问限定符的出现是为了更好的管理C语言中的结构体访问过于宽松自由以至于可能会造成一些意想不到的bug。而C中的类可以限制对类对象的访问这样更加安全。 4.类的作用域 类会有一个新的作用域在外部定义类成员时需要指定类名。 5. 类对象的存储方式 类对象中成员变量是存储在类对象中的而会多次被调用的成员函数并不会存储在类对象中否则定义多个类对象会造成较大的空间浪费因为每个类对象中都存储有同一个函数地址这显然是不合理的会造成很大的浪费。 class Date { public:void Init(int year 2023, int month 12, int day 1); private: int _year;int _month;int _day; }; void Date::Init(int year, int month, int day) {_year year;_month month;_day day; } int main() {Date d;d.Init();cout sizeof(d) endl;return 0; } 运行这段代码会发现结果是12这说明成员函数并不存在类对象中。 成员函数被存放在公共的代码段。 这里注意一下类的大小计算方式和结构体对齐规则相同并且空类大小为1不是0。 6. this指针 6.1 this指针的引入 class Date { public:void Init(int year 2023, int month 12, int day 1){_year year;_month month;_day day;} private: int _year;int _month;int _day; }; 先看这个类我们在调用成员函数时是这样调用的 int main() {Date d1;d1.Init();Date d2;d2.Init();return 0; } 我们传参时并没有传入给哪个对象调用这个函数的信息。举个例子来理解一下。 C语言中要实现Date 类中的这个Init函数功能一定会是这样的一个函数 void Init(struct Date* pd, int year, int month, int day); 总之一定会把对哪个对象调用函数的有关信息给写入形参列表这个信息可能是那个对象的地址 这样才能确定对哪个对象调用函数。 而C中的成员函数都存放在公共的代码段其中并没有任何关于对象的信息如何确定对哪个对象操作呢 实际上C在这里跟C语言的处理手法是一样的同样传入了一个地址用一个指针变量来接收这样函数就能知道对哪个对象进行操作了。 6.2 this指针的特性 this指针类型类类型* const 对Date类来说this指针类型就是Date* const这意味着this指针的值是不能修改的。 this指针只能在成员函数内部使用。 this指针本质是成员函数的形参是成员函数的一部分是不会存在对象内部的。 this是由编译器自动传递的不需要用户自己手动传递。 6.3有意思的面试题 // 1.下面程序编译运行结果是 A、编译报错 B、运行崩溃 C、正常运行 class A { public:void Print(){cout Print() endl;} private:int _a; };int main() {A* p nullptr;p-Print();return 0; } 相信一般都会认为会运行崩溃吧但是实际结果既出人意料又在情理之中。结果是A。 根据上面对this指针的讲解我们可以理解其实这里的p只是会传给Print作为形参而Print函数中没有对p作解引用操作因此自然不会崩溃而是正常运行。
http://www.zqtcl.cn/news/5197/

相关文章:

  • 贵州省建设项目验收备案网站如何建设网站 知乎
  • 制作表白网站在线制作简历的平台有哪些
  • 简洁游戏企业网站wordpress上传空间后
  • 河南网站建设平台中国网站建设
  • 网站头部特效wordpress主题购买
  • 饮食网站建设策划书wordpress手机端菜单被挤到第二行
  • 免费的网站域名查询app软件定制和开发
  • c 开发微网站开发企业网站设计哪个好
  • 重庆平台网站建设工wordpress建站 博客
  • 做外贸生意的网站股票app开发价格
  • 定制开发网站如何报价酷家乐个人免费版
  • wordpress 恢复主题如何做网站优化
  • 假网站是怎么做的简历模板可编辑
  • 网站怎么做描文本做网站怎么跟别人讲价
  • 青岛网站建设公司外包用手机开发软件的工具
  • 加强网站信息建设管理做网站有什么用
  • 网站主题模板下载深色大气网站模板
  • 青岛做网站的公司哪家好看想看的做想做的电影网站好
  • 网站推广注册wordpress安装出问题
  • 南京网站建设与维护桐乡网站建设
  • 大学网页制作与网站建设如何在WordPress主题中加载幻灯片
  • 贵州做网站怎么推广工厂代加工平台
  • 360网站提交跨境电商信息服务平台有哪些
  • 购物网站发展规划与建设进度app推广工作室
  • 龙口建网站公司价格万网封停慧聪张向东复仇
  • 网站建设需要云主机吗ui设计师需要学什么专业
  • jcms网站建设太原网站维护
  • 中国建设银行安徽省招聘信息网站html5网站开发特点
  • 网站备案号要怎么查询核酸检测最新消息
  • 网站安全评估报告邢台做网站优化费用