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

网站建设长春wordpress私信插件

网站建设长春,wordpress私信插件,自我建设外贸网站,云南高端网站制作价格C面向对象 面向对象的三大特征是继承#xff0c;多态和封装#xff0c;C重面向对象重要的就是这些#xff0c;我们下面通过一些简单的实例加以理解#xff0c;从这小节开始#xff0c;我们将开启新的编程旅途。与 C 语言编程的思想完全不同了#xff0c;这就是 C!理解概…C面向对象 面向对象的三大特征是继承多态和封装C重面向对象重要的就是这些我们下面通过一些简单的实例加以理解从这小节开始我们将开启新的编程旅途。与 C 语言编程的思想完全不同了这就是 C!理解概念和掌握这些编程方法对学习 C有很大的好处。 类和对象 C 在 C 语言的基础上增加了面向对象编程C 支持面向对象程序设计。类是 C 的核心特性通常被称为用户定义的类型。类用于指定对象的形式它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。 打个比方说明一下什么是类比如有一条小狗小狗有名字叫旺财旺财的年龄是 2 岁同时旺财会汪汪的叫也能跑。我们统称狗这个为类类是我们抽象出来的因为狗不只有上面的属性还有体重毛发的颜色等等我们只抽象出几种属性成一个类。具体到哪条狗就叫 对象。 从类中实例化对象分两种方法一种是从栈中实例化对象一种是从堆中实例化对象。 下面以自定义狗类介绍如何自定义类和如何使用对象。 在 Ubuntu 上编辑一个 03_class_dog_example 目录在 03_class_dog_example 目录下新建一个 03_class_dog_example.cpp 文件内容如下。 1 #include iostream 2 #include string 3 using namespace std; 4 5 class Dog 6 { 7 public: 8 string name; 9 int age; 10 11 void run() { 12 cout小狗的名字是:name,年龄是ageendl; 13 } 14 }; 15 16 int main() 17 { 18 Dog dog1; 19 20 dog1.name 旺财; 21 dog1.age 2; 22 dog1.run(); 23 24 Dog *dog2 new Dog(); 25 26 if (NULL dog2) { 27 return 0; 28 } 29 dog2-name 富贵; 30 dog2-age 1; 31 dog2-run(); 32 33 34 delete dog2; 35 dog2 NULL; 36 return 0; 37 } 第 5 行定义了一个 Dog 狗定义类时起的类名要尽量贴近这个类让人一看就明白您这个类是做什么的。 第 7 行访问限定符 public公有的此外还有 private私有的和 protected受保护的。写这个的目的是为了下面我们要调用这些成员不写访问限定符默认是 private。关于访问限定符如果是初学者可能会难理解。简单的来说访问限定符就是设置一个成员变量和成员函数的访问权限而已初学者暂时不必要深究什么时候应该用 public 和什么时候应该用 private。 第 8 至 11 行定义了一个字符串变量 name整形变量 age。和一个方法 run()。我们在这个 run()里打印相应的狗名和狗的年龄。PSstring 是 C的数据类型方便好用使用频率相当高。 第 18 行从栈中实例化一个对象 dog1(可以随意起名字)。 第 20 至 22 行为 dog1 的成员变量赋值dog1 的 name 赋值叫“旺财”年龄为 2 岁。然后调用 run()方法打印 dog1 的相关变量的信息。 第 24 行从堆中实例化对象使用关键字 new 的都是从堆中实例化对象。 第 26 行从堆中实例化对象需要开辟内存指针会指向那个内存如果 new 没有申请内存成功p 即指向 NULL程序就自动退出下面的就不执行了写这个是为了严谨。 第 29 至 31 行和 dog1 一样为 dog2 的成员赋值。 第 34 和 35 行释放内存将 dog2 重新指向 NULL。 如果没有语法错误我们完全可以预测到打印的结果。我们学习 C 语言的结构体类其实和结构类似可以说类是结构体的升级版本。 执行下面的指令开始编译。 g 03_class_dog_example.cpp -o 03_class_dog_example 编译完成后执行的结果如下。 通过上面的例子我们已经学习了什么是类和什么是对象。以描述 Dog 为一类抽象出来的从 Dog 类中实例出来就是对象实际事物。对象拥有 Dog 类里的属性可以从栈中实例化对象亦可从堆中实例化对象。类的编写过程和对象的使用过程大致如上了。我们只需要理解这个步骤明白类的定义和使用即可。 构造函数与析构函数 什么是构造函数构造函数在对象实例化时被系统自动调用仅且调用一次。构造函数出现在哪里前面我们学过类实际上定义类时如果没有定义构造函数和析构函数编译器就会生成一个构造函数和析构函数只是这个构造和析构函数什么事情也不做所以我们不会注 意到一点。 构造函数的特点如下 1 构造函数必须与类名同名 2 可以重载重载新概念后面学到什么是重载。 3 没有返回类型即使是 void 也不行。 什么是析构函数与构造函数相反在对象结束其生命周期时系统自动执行析构函数。实际上定义类时编译器会生成一个析构函数。 析构函数的特点如下 1 析构函数的格式为~类名() 2 调用时释放内存资源 3 ~类名()不能加参数 4 没有返回值即使是 void 也不行。 下面我们通过简单的例子来说明构造函数和析构函数的使用。新建一个目录04_structor_example编辑一个 04_structor_example.cpp 内容如下。 1 #include iostream 2 #include string 3 using namespace std; 4 5 class Dog 6 { 7 public: 8 Dog(); 9 ~Dog(); 10 }; 11 12 int main() 13 { 14 Dog dog; 15 cout构造与析构函数示例endl; 16 return 0; 17 } 18 19 Dog::Dog() 20 { 21 cout构造函数执行endl; 22 } 23 24 Dog::~Dog() 25 { 26 cout析构函数执行endl; 27 } 我们还是以简单的狗类作为示例定义一个狗类把构造函数和析构函数写上。前面不是说会自动生成构造函数和析构函数的吗注意是编译时编译器生成的。当我们要使用构造函数和析构函数时需要我们自己在类里添加。 第 5 至第 10 行定义了一个狗类并在里面写了构造函数和析构函数。 第 14 行使用 Dog 类实例化一个 dog 对象。 第 15 行打印一句构造与析构函数示例。 第 19 至 22 行类的函数可以在类里实现也可以在类外实现不过在类外实现时需要使用“::”此时我们把类的构造函数定义在类的外面打印一句构造函数执行。 第 14 至 27 行类的析造函数定义在类的外面打印一句析造函数执行。 执行下面的指令开始编译。 g 04_structor_example.cpp -o 04_structor_example 编译完成后执行的结果如下。 其实执行的结果也是可以预测的在对象实例化时会调用构造函数所以 Dog()先执行然后再在 main()函数里继续执行 cout“构造与析构函数示例”endl;。最后对象生命周期结束时才会执行析构函数。 2.2.1.2 this 指针 一个类中的不同对象在调用自己的成员函数时其实它们调用的是同一段函数代码那么成员函数如何知道要访问哪个对象的数据成员呢 没错就是通过 this 指针。每个对象都拥有一个 this 指针this 指针记录对象的内存地址。 在 C中this 指针是指向类自身数据的指针简单的来说就是指向当前类的当前实例对象。 关于类的 this 指针有以下特点 1 this 只能在成员函数中使用全局函数、静态函数都不能使用 this。实际上成员函数默认第一个参数为 T * const this。也就是一个类里面的成员了函数 int func(int p)func 的原型在编译器看来应该是 int func(T * const this,int p)。 2 this 在成员函数的开始前构造在成员函数的结束后清除。 3 this 指针会因编译器不同而有不同的放置位置。可能是栈也可能是寄存器甚至全局变量。 下面以简单的例子来说明 this 的用法。我们还是以狗类为例按上面的 this 解释this 只能够在成员函数使用并可以指向自身数据。我们就可以写这样简单的例子来说明 this 的用法。 我们在 Qt 里也会遇到 this 这个东西下面这个例子就很容易解释 Qt 里的 this 指针的用法。 新建一个目录 05_this_pointer_example编辑一个 05_this_pointer _example.cpp 内容如下。 1 #include iostream 2 #include string 3 using namespace std; 4 5 class Dog 6 { 7 public: 8 string name; 9 void func(); 10 }; 11 12 int main() 13 { 14 Dog dog; 15 dog.func(); 16 return 0; 17 } 18 19 void Dog::func() 20 { 21 this-name 旺财; 22 cout小狗的名字叫this-nameendl; 23 } 第 21 和 22 行在类的成员函数里使用了 this 指针并指向了类里的成员 name。先将 name赋值叫“旺财”然后我们打印 name 的值。 当程序没有语法错误里我们可以预测打印的结果就是“小狗的名字叫旺财”。 执行下面的指令开始编译。 g 05_this_pointer_example.cpp -o 05_this_pointer_example 程序执行的结果如下。 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类这使得创建和维护一个应用程序变得更容易。这样做也达到了重用代码功能和提高执行效率的效果。 当创建一个类时您不需要重新编写新的数据成员和成员函数只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类新建的类称为派生类。在 Qt 里大量的使用了这种特性当 Qt 里的类不满足自己的要求时我们可以重写这个类就是通过继承需要重写 的类来实现自己的类的功能。 一个类可以派生自多个类这意味着它可以从多个基类继承数据和函数。定义一个派生类我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名形式如下 class derived-class: access-specifier base-class 与类的访问修饰限定符一样继承的方式也有几种。其中访问修饰符 access-specifier 是 public、protected 或 private 其中的一个base-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier则默认为 private。 下面来捋一捋继承的方式例子都是以公有成员和公有继承来说明其他访问修饰符和其他继承方式大家可以在教程外自己捋一捋。这个公有成员和继承方式也没有什么特别的无非就是不同的访问权限而已可以这样简单的理解。 公有继承public当一个类派生继承公有基类时基类的公有成员也是派生类的公有成员基类的保护成员也是派生类的保护成员基类的私有成员不能直接被派生类访问但是可以通过调用基类的公有和保护成员来访问。 保护继承protected 当一个类派生继承保护基类时基类的公有和保护成员将成为派生类的保护成员。 私有继承private当一个类派生继承私有基类时基类的公有和保护成员将成为派生类的私有成员。 下面我们还是以狗类为例在 2.2.1 小节里我们定义的狗类已经定义了 nameage 和 run()方法。假设我们不想重写这个狗类而是新建一个 Animal 类让狗类去继承这个 Animal 类。 假设是公有继承那么我们是不是可以在狗类实例的对象里去使用继承 Animal 类里的成员呢 带着这个疑问我们使用下面的例子来说明。 新建一个目录 06_inherit_example编辑一个 06_inherit_example.cpp 内容如下。 1 #include iostream 2 #include string 3 using namespace std; 4 5 /*动物类抽象出下面两种属性 6 *颜色和体重是每种动物都具有的属性 7 */ 8 class Animal 9 { 10 public: 11 /* 颜色成员变量 */ 12 string color; 13 /* 体重成员变量 */ 14 int weight; 15 }; 16 17 /*让狗类继承这个动物类并在狗类里写自己的属性。 18 *狗类拥有自己的属性 nameagerun()方法同时也继承了 19 *动物类的 color 和 weight 的属性 20 */ 21 class Dog : public Animal 22 { 23 public: 24 string name; 25 int age; 26 void run(); 27 }; 28 29 int main() 30 { 31 Dog dog; 32 dog.name 旺财; 33 dog.age 2; 34 dog.color 黑色; 35 dog.weight 120; 36 cout狗的名字叫dog.nameendl; 37 cout狗的年龄是dog.ageendl; 38 cout狗的毛发颜色是dog.colorendl; 39 cout狗的体重是dog.weightendl; 40 return 0; 41 } 第 21 行Animal 作为基类Dog 作为派生类。Dog 继承了 Animal 类。访问修饰符为 public公有继承。 执行下面的指令开始编译。 g 06_inherit_example.cpp -o 06_inherit_example 编译完成执行的结果为如下。
http://www.hkea.cn/news/14329469/

相关文章:

  • 南宁哪些公司专业做网站专业网页制作与网站设计
  • 免费追剧网站大全wordpress资源占用
  • 贵州贵阳网站开发wordpress上传乱码
  • 网站代理工具wordpress轻社区插件
  • 网站流量站怎么做网站建设基
  • vue 做网站 seowordpress显示分类文章
  • 网站正在升级建设中源码无锡做网站哪家公司好
  • 网站内部链接怎么做视频解析wordpress
  • 建设一个微商的网站做博客网站用什么模板
  • 做国外家具贸易的网站python基础教程百度云
  • 河北省网站建设公司排名洛阳做网站的
  • 合浦县城乡规划建设局网站看网站的访问量
  • 南京网站搜索优化手机作图软件app
  • 美食网站开发毕业设计建设俄语网站
  • 沈阳网络推广建站免费搭建平台网站
  • 网站建设推荐频道建设网站的服务器费用
  • wordpress+发布文章慢一个新的网站怎么做SEO优化
  • 建设电影网站赚钱临沂做网站首选
  • 常州网站建设公司教程wordpress简洁cms主题
  • 杭州市江干建设局网站wordpress防下载
  • 合肥建行网站国外新闻最新消息
  • 网站301跳转代码多用户网站制作
  • 国外做美食视频网站网络服务提供者知道或者应当知道网络用户
  • 色和尙做爰网站dz网站如何做301
  • 义乌网站优化怎样做士产品销售网站
  • 解析网站接口怎么做长沙网站搭建关键词排名
  • 建筑招聘湖南有实力的关键词优化
  • 佛山网站推广排名项目从立项到施工的程序
  • vpn网站模板wordpress是怎么添加登录的
  • 做贸易常用的网站WordPress标题换行显示