《零基础看得懂的C++入门教程 》——(10)面向对象

公众号 碧油鸡 2021-01-14 17:45:27
c++ 基础 零基 看得 看得懂


一、学习目标

  1. 了解C++类是什么
  2. 了解类对象与类型修饰一样进行创建
  3. 了解了类的属性如何使用
  4. 了解了类方法的使用方法

二、了解类的使用方法

2.1 什么是C++类及基本使用方法 类用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

例如:人是一种类型,拥有年龄、身高、体重、性别等属性。具体一个人是一个对象,例如小明;小明有年龄、身高、体重、性别等属性。小红也是人,所以具有相同属性。

类变量类变量在整个实例化的对象中是公用的。或者可以理解为属性。创建一个人的类,类里面有类变量,使用类变量记录人的年龄、性别、身高等属性。定义一个类使用关键字class,随后是一个类名,在类名后的花括号中编写当前类的内容:

class HumanClass{
public:
char name;
char sex;
int age;
};

以上代码创建了一种类型,这种类型具备name名字、sex性别和age年龄这几个属性,并且这几个属性是公开的;就像你玩游戏一样,游戏角色的名称是看得见的,也可以看见是男性还是女性;其中public就是表示在冒号:后定义的变量都是公开内容。我们字使用这些公开属性时,可以直接创建一个对象后在外部使用。具体使用如下:

#include<iostream>
using namespace std;
class HumanClass{
public:
char name;
char sex;
int age;
};
int main() {
HumanClass xiaoming;
xiaoming.age=11;
xiaoming.sex='N';
xiaoming.name='M';
cout<<"小明的age是:"<<xiaoming.age<<endl;
cout<<"小明的sex是:"<<xiaoming.sex<<endl;
cout<<"小明的name是:"<<xiaoming.name<<endl;
}

以上代码创建一个具体类型很简单,使用HumanClass xiaoming;就可以创建一个HumanClass 这个类型的对象,在这里具体为是xiaoming;这就意味着,xiaoming属于这一个类别,由于age、sex、name都属于公开的属性,那我们就可以去更改他,那么接下来就开始对xiaoming这个类型的属性进行赋值:

xiaoming.age=11;
xiaoming.sex='N';
xiaoming.name='M';

随后我们还可以进行输出:

cout<<"小明的age是:"<<xiaoming.age<<endl;
cout<<"小明的sex是:"<<xiaoming.sex<<endl;
cout<<"小明的name是:"<<xiaoming.name<<endl;

运行程序可以看到结果:

2.2 了解类方法的使用 类方法就是指这个类中定义的函数,这个类具有哪些功能;例如狗有个方法就是发声,汪汪叫;定一个方法用来输出汪汪,模拟狗的叫声。 以下是一个类,名为Dog:

class Dog{
public:
char name;
char sex;
int age;
void jiao(){
cout<<"汪汪叫"<<endl;
}
};

在以上类中一个函数,名为jiao,这个jiao的功能是输出“汪汪叫”。我们首先创建这个类的对象:

Dog wang;

随后定义属性值:

wang.age=11;
wang.sex='N';
wang.name='M';

类的方法使用也非常简单,跟函数使用后的功能一样:

wang.jiao();

最后输出一下内容:

cout<<"小明的age是:"<<wang.age<<endl;
cout<<"小明的sex是:"<<wang.sex<<endl;
cout<<"小明的name是:"<<wang.name<<endl;

完整的代码如下:

#include<iostream>
using namespace std;
class Dog{
public:
char name;
char sex;
int age;
void jiao(){
cout<<"汪汪叫"<<endl;
}
};
int main() {
Dog wang;
wang.age=11;
wang.sex='N';
wang.name='M';
wang.jiao();
cout<<"小明的age是:"<<wang.age<<endl;
cout<<"小明的sex是:"<<wang.sex<<endl;
cout<<"小明的name是:"<<wang.name<<endl;
}

结果如下:

三、总结

  1. 了解C++类是什么
  2. 了解类对象与类型修饰一样进行创建
  3. 了解了类的属性如何使用
  4. 了解了类方法的使用方法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[公众号 碧油鸡]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1773928

  1. Learn about RPC, why RPC was born, and what's the difference between RPC and HTTP?
  2. Learn about RPC, why RPC was born, and what's the difference between RPC and HTTP?
  3. Learn java base conversion supplementary learning
  4. JDBC测试连接数据库
  5. JDBC test connection database
  6. 大厂面试官竟然这么爱问Kafka,一连八个Kafka问题把我问蒙了?
  7. The interviewers of big factories love to ask Kafka so much. I'm blinded by eight Kafka questions in a row?
  8. 安卓开发和java开发有什么区别!2021年BATJ30套大厂Android经典高频面试题,面试必问
  9. Spring Security OAuth2.0認證授權四:分散式系統認證授權
  10. What's the difference between Android development and java development! 2021 batj30 Android classic high frequency interview questions
  11. Spring security oauth2.0 authentication and authorization 4: distributed system authentication and authorization
  12. Java微服务 vs Go微服务,究竟谁更强!?
  13. 大厂面试官竟然这么爱问Kafka,一连八个Kafka问题把我问蒙了?
  14. Who is stronger, Java microservice vs go microservice!?
  15. Java微服务 vs Go微服务,究竟谁更强!?
  16. The interviewers of big factories love to ask Kafka so much. I'm blinded by eight Kafka questions in a row?
  17. Who is stronger, Java microservice vs go microservice!?
  18. springboot异常处理之404
  19. Spring boot exception handling 404
  20. Spring Boot Security 国际化 多语言 i18n 趟过巨坑
  21. springboot异常处理之404
  22. Spring boot security international multilingual I18N
  23. Spring boot exception handling 404
  24. Netty系列化之Google Protobuf编解码
  25. Netty之编解码
  26. Java编解码
  27. Netty解码器
  28. Netty与TCP粘包拆包
  29. Netty开发入门
  30. Java集合遍历时遇到的坑
  31. Spring IOC 源码解析(下)
  32. Spring IoC源码解析(上)
  33. Google protobuf codec of netty serialization
  34. Encoding and decoding of netty
  35. Java codec
  36. Netty decoder
  37. Netty and TCP packet sticking and unpacking
  38. Introduction to netty development
  39. Problems encountered in Java collection traversal
  40. Spring IOC source code analysis (2)
  41. Spring IOC source code analysis (Part one)
  42. 半小时用Spring Boot注解实现Redis分布式锁
  43. Implementing redis distributed lock with spring boot annotation in half an hour
  44. What should we do if we can't get tickets for Spring Festival transportation? You can solve this problem by using these ticket grabbing apps!
  45. 百度智能(文本识别),API传图OC代码与SDK使用
  46. springboot源码解析-管中窥豹系列之aware(六)
  47. Baidu intelligent (text recognition), API map, OC code and SDK
  48. Spring boot source code analysis
  49. springboot源码解析-管中窥豹系列之aware(六)
  50. 百度智能(文本识别),API传图OC代码与SDK使用
  51. Spring boot source code analysis
  52. Baidu intelligent (text recognition), API map, OC code and SDK
  53. Java学习笔记
  54. Java learning notes
  55. Sentry(v20.12.1) K8S 雲原生架構探索, SENTRY FOR JAVASCRIPT 手動捕獲事件基本用法
  56. 我的程式設計師之路:自學Java篇
  57. SpringBoot專案,如何優雅的把介面引數中的空白值替換為null值?
  58. Sentry (v20.12.1) k8s cloud native architecture exploration, sentry for JavaScript manual capture event basic usage
  59. My way of programmer: self study java
  60. Spring boot project, how to gracefully replace the blank value in the interface argument with null value?