c++类和对象基本概念

女爷i 2022-05-14 07:20 475阅读 0赞

c++类和对象基本概念

1.什么是类?什么是对象?两者的区别是什么?

类是抽象的,对象是具体的的,对象是类的一个实例,对象继承类的方法和属性。

举个例子:人是一个类,它是抽象,那什么是对象呢?那就是具体指的哪个人,比如小红、小明,这就是对象,人有外貌特征和行为,比如鼻子、耳朵、眼睛

2.代码分析

  1. #include<iostream>
  2. #include<string>
  3. using namespace std; //使用std命名空间
  4. struct Hero
  5. {
  6. char name[64];
  7. int id;
  8. };
  9. void printHero(Hero &h)
  10. {
  11. cout << "name=" << h.name << endl;
  12. cout << "id=" << h.id << endl;
  13. }
  14. class SuperHero
  15. {
  16. public://访问权限控制
  17. char name[64];
  18. int id;
  19. void printHero()
  20. {
  21. cout << "name=" << name << endl;
  22. cout << "id=" << id << endl;
  23. }//类内部函数(方法)调用 类内部变量时,不需要传参,可以直接调用
  24. //因为都是在同一个类的内部,函数内调用的变量会直接在类内部匹配,且不会发生歧义,类内部函数又被叫做方法
  25. };
  26. class Dog
  27. {
  28. public: //public权限时,在类的内部和外部都可以直接访问类里面的变量和方法(函数)
  29. char name[64];
  30. char color[64];
  31. void printDog(int age) //函数内的age为外部调用函数时传进来的参数
  32. {
  33. this->age = age; //表示这个类内部定义的age, this->age 和 int age是两个不同的变量
  34. cout << "age=" << this->age << endl;
  35. cout << "name=" << name << endl;
  36. cout << "color=" << color << endl;
  37. }
  38. private: //private权限时,只有类内部可以访问此权限下的变量和方法
  39. int age;
  40. protected: //protected权限时,在单个类中,和private关键字的权限是一样的。只有在类的继承 中,才和private有区别
  41. };
  42. class Date
  43. {
  44. public:
  45. void initDate(int year, int month, int day)
  46. {
  47. this->year = year;
  48. this->month = month;
  49. this->day = day;
  50. }
  51. void printDate()
  52. {
  53. cout << "year=" << year << endl;
  54. cout << "month=" << month << endl;
  55. cout << "day=" << day << endl;
  56. }
  57. bool isLeapYear()
  58. {
  59. if((year % 4 == 0 && year % 100)||(year % 400 == 0))
  60. {
  61. cout << year << "is leap year" << endl;
  62. return true;
  63. }
  64. cout << year << "is not leap year" << endl;
  65. return false;
  66. }
  67. //为了获取和改变类的私有变量,C++统一了命名方法,get...()和set...()
  68. //将数据成员私有化,提供Getter和Setter来访问,即所谓的"封装"
  69. int GetYear()
  70. {
  71. return year;
  72. }
  73. int SetYear(int year)
  74. {
  75. this->year = year;
  76. }
  77. private:
  78. int year;
  79. int month;
  80. int day;
  81. };
  82. //一个类的成员变量默认访问权限为private,类的本质是一个类型,对象的本质是变量
  83. class Date1
  84. {
  85. int year;
  86. };
  87. //一个结构体的成员变量的默认访问权限为public
  88. struct Date2
  89. {
  90. int year;
  91. };
  92. int main()
  93. {
  94. Hero h = {"zhouhao",25};
  95. printHero(h);
  96. //SuperHero是一种类型,被叫做类,hero是一个SuperHero的变量,被叫做对象
  97. SuperHero hero;
  98. hero.id = 100;
  99. strcpy_s(hero.name, sizeof("zhouhaohao")+1,"zhouhaohao");
  100. hero.printHero();
  101. Dog dog;
  102. //因为Dog类里的成员变量color和name都是public权限,所以在类外部可以做直接对这两个类的内部成员赋值
  103. strcpy_s(dog.color, strlen("yellow")+1, "yellow");
  104. strcpy_s(dod.name, strlen("dahuang")+1, "dahuang");
  105. //在类的外部不可以直接访问类内部private权限下的变量和方法(函数),但可以通过调用public权限下的方法对私有变量进行访问修改
  106. dog.printDog(3);
  107. Date date;
  108. int year, month, day;
  109. cin >> year >> month >> day;
  110. date.initDate(year,month,day);
  111. date.printDate();
  112. date.isLeapYear();
  113. //封装的方法改变year的值
  114. date.SetYear(2018);
  115. cout << date.GetYear() << endl;
  116. return 0;
  117. }

3.参考

发表评论

表情:
评论列表 (有 0 条评论,475人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java对象概念

    Java是一门面向对象的编程语言,理解Java,首先要理解类与对象这两个概念。 Java中的类可以看做C语言中结构体的升级版。结构体是一种构造数据类型,可以包含不同的

    相关 c++对象基本概念

    c++类和对象基本概念 1.什么是类?什么是对象?两者的区别是什么? 类是抽象的,对象是具体的的,对象是类的一个实例,对象继承类的方法和属性。 举个例子:人是一个