第一周学习:类和对象基本概念和用法

  1. 结构化程序设计

程序 = 数据结构 + 算法

  • 程序由全局变量以及众多相互调用的函数组成
  • 算法以函数形式呈现,用于对数据结构进行操作

不足:函数和数据结构没有directly connect,随着程序规模增加,程序变得难以理解,比如某个数据结构到底有哪些函数在操作?某个函数到底使操作那些数据结构?任何两个函数存在什么调用关系?

  • 没有封装和隐藏概念,如果要修改某个变量,必须要把源语句找出来,不利于维护和扩充
  • 难以查错

重用:已有相同功能的代码块,结构化程序不利于重用。

  1. 面向对象程序设计

面向对象程序 = 类+类+类+……

  • 把某一类客观事物的共同特点归纳出来,形成一个数据结构(可以用多个变量描述事物属性)
  • 把该事物所能进行的行为归纳出来,形成一个个函数,函数可以来操作数据结构(抽象)

将数据结构和操作方法捆绑——类,这就是封装
面向对象具有抽象、封装、继承、多态的四个基本特点

  1. 类和对象

1)从客观事物抽象出类

eg.矩形,则成员变量为长、宽,成员函数有计算面积、周长、
设置长宽、以及displace。
#include<iostream>
class rectangle
{
    
    
	private:
		double length;
		double width;
	public:
		rectangle(double a=0,double b=0):length(a),width(b){
    
    }
		double area(){
    
    return (length*width);};
		double perimeter(){
    
    return 2*(length+width);}
		void displace();
}; 

void rectangle::displace()
{
    
    
	std::cout<<"Area is "<<area()
	<<", perimeter is "<<perimeter()<<std::endl;
}

int main()
{
    
    
	rectangle r1,r2(10,20);
	cout<<r1.area()<<endl;     
	r2.displace();
}

对象的内存分配

  • 对象所占用的内存空间大小等于所有成员变量的大小之和,成员函数不会放在对象的内存里边。
  • 每个对象都有各自的存储空间

使用成员函数和成员变量方法

  1. 对象.成员变量/成员方法
  2. 指针->成员名
rectangle r1(10,20),r2;
rectangle* p =&r1;
p->displace();
  1. 引用名.成员名

可访问范围

  1. private( default),不能在类以外被访问,设置私有成员的机制叫 隐藏,如要访问一定要通过成员函数。
  2. public
  3. protected

成员函数重载以及参数缺省

对,成员函数也可以重载和参数缺省,略……(avoid ambiguity problems就好)

int val(int x = 0) ;
void val() ; 
//这样可能会二义性

猜你喜欢

转载自blog.csdn.net/ZmJ6666/article/details/108548666