C++面向对象知识点梗概(一)

1.类(class)和对象(object)

1.1类和对象的关系

抽象/具体,概念/实体,图纸/产品…。
类与对象的关系就如模具和铸件的关系,类的实例化的结果就是对象,而对对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为的对象。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是一种数据类型,对象是具有类类型的变量。
类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。
(1)类class:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(2)对象object:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。
实际开发时,要将“系统需求”抽象设计为“类”,再实例化为多个不同的“对象”。
一个软件系统中,一般有多个类,如教学管理系统中的教师类、学生类、课程类等,一个类一般要实例化多个对象,很显然,一个教学管理系统不可能就一个学生、一个老师、一门课程。

1.2.类的定义

class是C++用来定义类的关键字。类的名称-类名的首字母一般大写(规范),以和其他的标识符区分开,{ }内部是类所包含的成员变量和成员函数,它们统称为类的成员(Member);由{ }包围起来的部分有时也称为类体。
如:class Student {
public: //公有成员
void study(); //类的成员函数,或方法等
void exam(); //只有极简单的成员函数在类内定义
private: //私有成员
string _name; //类的成员变量,或属性等
int id;
} ; //以上称为类体
void Student::stuey() //类外定义成员函数
{ //一般稍微复杂的函数都在类体外定义
函数体;
}
void Student::exam() //类外定义成员函数
{
函数体;
}

1.3 权限控制符/访问修饰符

数据封装是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问修饰符。
一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体结束右括号之前都是有效的。成员和类的默认访问修饰符是 private。
class Base
{
public: // 公有成员,先理解public和private两种
protected: // 受保护成员
private: // 私有成员
};
公有(public)成员:公有成员在程序中类的外部是可访问的。您可以不使用任何成员函数来设置和获取公有变量的值。一般用来定义类成员函数,作为对外访问的借口。
私有(private)成员:私有成员变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员。默认情况下,类的所有成员都是私有的。一般用来定义类成员变量,实现类数据隐藏。
先理解以上两种类型。
protected(受保护)成员:protected(受保护)成员介于public和private之间, protected(受保护)成员在派生类(即子类)中是可访问的。
如class Box
{
public:
double length; //一般设为私有,此处用来展示公有成员和私有成员的区别
void setWidth( double wid );
double getWidth( void );
private:
double width;
};
Box b1;
b1.length=12; // 合法
b1.width=12; // 不合法,编译错误

1.4 对象的创建和使用

定义了类,就相当于定义了一个数据类型。类与int、char等普通数据类型的使用方法是一样的。可以定义变量、数组或指针变量等,使用类定义的变量称为类的对象。
如class Student
{
类体;
}
Student stu1, stu[30]; //定义类的变量和数组
Student *stu=&stu1; //定义类的指针变量并指向stu1对象
Student *stu2 = new Student; //定义类的指针变量并实例化
Student *stu3=new Student[30]; //定义类的指针数组变量并实例化

1.5 对象的成员访问和引用(设置和读取)
创建了类对象以后,就可以通过”.”和”->” 运算符访问对象的成员。
如:class Student { //建议初学者补全运行以下程序
public: //公有成员
void study(); //类的成员函数,或方法等
void exam(); //只有极简单的成员函数在类内定义
void setName(string name);
void setID(int id);
void showStu();
private: //私有成员
string _name; //类的成员变量,或属性等
int _id;
} ;
// 函数实现略
Student stu1,stu2,stu3[30]; //定义类的变量和数组
Student *pstu=&stu1; //定义类的指针变量并指向stu1对象
Student &rstu= stu2; //定义类的引用
Student *stu4 = new Student; //定义类的指针变量并实例化
Student *stu5=new Student[30]; //定义类的指针数组变量并实例化
//Student *stu6=new Student[30]; //定义类的指针数组变量并实例化
stu1.setName(“wangqing”);
stu1.setID(20090110);
pstu->showStu();
stu2.setName(“lishuai”);
stu2.setID(20090111);
rstu.showStu();
stu4->setName(“zhangming”);
stu4->setID(20090112);
for(int i=0;i<3;i++)
{
string name;
int id;
cin>>name>>id;
stu3[i].setName(name);
stu3[i].setID(id);
}
for(int i=0;i<3;i++)
{
stu3[i].showStu( );
}
for(int i=0;i<3;i++)
{
string name;
int id;
cin>>name>>id;
stu5[i].setName(name);
stu5[i].setID(id);
}
for(int i=0;i<3;i++,stu5++)
{
stu5->showStu( );
}

注:如有侵权,请联系lg997@126.com,即刻调整。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值