1. 类与对象
  2. 怎么将自己写的类与main分开(做成源文件和头文件)

 

  1 #include <iostream>
  2 using namespace std;
  3 
  4 //C++面向对象的三大特性为:封装、继承、多态
  5 /*封装
  6 将属性和行为作为一个整体,表现生活中的事物
  7 将属性和行为加以权限控制
  8 
  9 语法: class 类名{访问权限:属性/行为};
 10 类中的属性和行为我们统一称为成员
 11 属性 成员属性 成员变量
 12 行为 成员函数 成员方法
 13 */
 14 const double PI=3.14;
 15 class Circle
 16 {
 17     //访问权限
 18 public:
 19     //属性
 20     int m_r;
 21     //行为
 22     //获取圆的周长
 23     double calculateZC()
 24     {
 25         return 2*PI*m_r;
 26     }
 27 };
 28 
 29 class Student
 30 {
 31 public:
 32     string s_name;
 33     string s_id;
 34     
 35     void setName(string name)
 36     {
 37         s_name=name;
 38     }
 39     void setId(string id)
 40     {
 41         s_id=id;
 42     }
 43     void showInfo()
 44     {
 45         cout<<"姓名:"<<s_name<<endl;
 46         cout<<"学号:"<<s_id<<endl;
 47     }        
 48 };
 49 
 50 /*类在设计时,可以把属性和行为放在不同的权限下,加以控制
 51 public 公共权限 成员在类内外都可以访问
 52 protected 保护权限 成员类内可以访问,类外不可以 子类可以访问
 53 private 私有权限    成员类内可以访问,类外不可以 子类不可以访问
 54 */
 55 
 56 class Person
 57 {
 58 public:
 59     //公共权限
 60     string m_Name;//姓名
 61 protected:
 62     //保护权限
 63     string m_Car;//汽车
 64 private:
 65     //私有权限
 66     int m_Password;//银行卡密码        
 67 };
 68 
 69 
 70 /*struct和class区别
 71 struct默认权限为公共 public
 72 class 默认权限为私有 private
 73 有人说class 是struct的推广
 74 ”C++语法比C新增struct里面可以写函数“--c与C++中struct的的区别
 75 */
 76 
 77 /*成员属性设置为私有
 78 优点:1、将所有成员属性设置为私有,可以自己掌控读写权限
 79         2、对于写权限,我们可以检测数据的有效性(可以加判断条件)
 80         
 81 */
 82 
 83 int main()
 84 {
 85     //通过圆类创建具体的圆(对象)
 86     //实例化 通过一个类创建一个对象的过程
 87     Circle c1;
 88     //给圆对象的属性进行赋值
 89     c1.m_r=10;
 90     cout<<"圆c1的周长:"<<c1.calculateZC()<<endl;
 91     
 92     Student s1;
 93     Student s2;
 94     s1.s_name="张三";
 95     s1.s_id="123456";
 96     s1.showInfo();
 97     s2.setName("李四");
 98     s2.setId("234567");
 99     s2.showInfo();
100     system("pause");
101     return 0;
102 }

 两种防止重复的写法

1 //方法1 可跨平台
2 #ifndef __SOMEFILE_H__
3 #define
4 
5 #endif
6 //方法2 不可跨平台
7 #pragma once

头文件只需声明不用实现‘

 1 #ifndef __CIRCLE_H__
 2 #define
 3 #include <iostream>
 4 #include "point.h"
 5 using namespace std;
 6 
 7 class Circle
 8 {
 9 public:
10     //设置半径
11     void setR(int r);
12     //获取半径
13     int getR();
14     //设置圆心
15     void setCenter(Point center);
16     //获取圆心
17     Point getCenter();
18 private:
19     int m_R;
20     Point m_Center;//圆心
21 };
22 
23 #endif

源文件要写好作用域,不用写类名与访问权限

 1 #include "circle.h"
 2 
 3 //设置半径
 4 void Circle::setR(int r){m_R=r;}
 5 //获取半径
 6 int Circle::getR(){return m_R;}
 7 //设置圆心
 8 void Circle::setCenter(Point center)
 9 {
10     m_Center=center;
11 }
12 //获取圆心
13 Point Circle::getCenter()
14 {
15     return m_Center;
16 }

 

posted @ 2023-09-05 13:24  HuangWQ289  阅读(8)  评论(0编辑  收藏  举报