C++笔记(一)——类和对象

🍎1. 面向对象程序设计

  1. 对象:每一个对象都由数据和函数(操作代码)组成
  2. 封装 & 信息隐蔽:将有关数据和代码封装在一个对象中即为封装,将对象中某些部分对外隐蔽即为信息隐蔽
  3. 抽象:类是对象的抽象,对象是类的具体表现形式
  4. 继承 & 重用:在一个已有类的基础上建立一个新的类即为继承,继承用了已有类中的代码即为代码重用
  5. 多态:由继承而产生的相关的不同的类,其对象对同一消息会做出不同的响应

🍎2. 类的声明 & 对象的定义

🍇2.1 类的声明

class 类名
{
	public:
		……
	private:
		……
	protected:
		……
};
  1. public:公有成员访问限定符,谁都能访问,
  2. private:私有成员访问限定符,只有本类内可访问
  3. protected:保护成员访问限定符,只有本类 & 继承于本类的类可访问

🍇2.2 对象的定义

  1. 先声明类,再定义对象(s表示可同时定义多个对象)

    class 类名
    {
    	public:
    		……
    	private:
    		……
    	protected:
    		……
    };
    类名 对象s;
    
  2. 声明类的同时定义对象

    class 类名
    {
    	public:
    		……
    	private:
    		……
    	protected:
    		……
    }对象s;
    
  3. 不出现类名,直接定义对象不常用

    class 
    {
    	public:
    		……
    	private:
    		……
    	protected:
    		……
    }对象s;
    

🍇2.3 类和结构体类型的异同

  1. 用struct声明的类,如果对其成员不作private或public的声明,系统将其默认为public(公有的)
  2. 用class声明的类,如果对其成员不作private或public的声明,系统将其默认为private(私有的)

🍎3. 类的成员函数

  1. 类外定义成员函数

    class Time
    {
    	public:
    		void set();
    	private:
    		int hour,minute,sec;
    };
    void Time::set()
    {
    	cin >> hour >> minute >> sec;
    }
    
    Time t1;
    
  2. 一个对象所占的空间大小只取决于该对象中数据成员所占的空间,而与成员函数无关。函数代码是存储在对象空间之外的。

🍎4. 对象成员的引用

🍇4.1 通过对象名和成员运算符访问

class Time
{
	public:
		void set();
	private:
		int hour,minute,sec;
};
void Time::set()
{
	cin >> hour >> minute >> sec;
}

Time t1;

int main()
{
	t1.set();
	return 0;
}

🍇4.2 通过指向对象的指针访问

class Time
{
	public:
		void set();
	private:
		int hour,minute,sec;
};
void Time::set()
{
	cin >> hour >> minute >> sec;
}

Time t1, * p;

int main()
{
	p = &t1;
	p->set();
	return 0;
}

🍇4.3 通过对象的引用来访问

class Time
{
	public:
		void set();
	private:
		int hour,minute,sec;
};
void Time::set()
{
	cin >> hour >> minute >> sec;
}

Time t1;
Time t2 = &t1;

int main()
{
	t2.set();
	return 0;
}

🍎5. 习题

  1. 需要求三个长方柱的体积,轻便一个基于对象的程序。数据成员包括length(长)、width(宽)、height(高)。要求用成员函数实现以下功能:

    1. 由键盘分别输入三个长方柱的长宽高;
    2. 计算长方柱的体积
    3. 输出三个长方柱的体积
    #include <iostream>
    using namespace std;
    
    class Rectangle
    {
            public:
                    void input_data()
                    {
                            cin >> length >> width >> height;
                    }
                    int compute()
                    {
                            return length * width * height;
                    }
                    void print(int x)
                    {
                            cout <<  x  << endl;
                    }
            private:
                    int length;
                    int width;
                    int height;
    };
    
    int main()
    {
            Rectangle r1,r2,r3;
    
            cout << "please input r1's data" << endl;
            r1.input_data();
            cout << "please input r2's data" << endl;
            r2.input_data();
            cout << "please input r3's data" << endl;
            r3.input_data();
    
            int area1 = r1.compute();
            int area2 = r2.compute();
            int area3 = r3.compute();
    
            cout << "r1's volume : ";
            r1.print(area1);
            cout << "r2's volume : ";
            r2.print(area2);
            cout << "r3's volume : ";
            r3.print(area3);
    
            return 0;
    }
    
    

在这里插入图片描述
下一章构造函数与析构函数

在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ltd Pikashu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值