目录
1、 概念
1.1 对象:
现实世界中一切客观存在的事物,统称为对象。对象是有形的,例如一杯水,一台电脑等。
也可以是无形的,例如一项具体的计划,一段经历。
1.2 类型:
将现实世界中具体的对象进行概括,找出他们的公共性质并加以描述,这样就形成了人们口
中的类型。
人类认识世界的过程是不断的找出对象的公共性质并加以概括性描述的过程—贴标签。
人类改造世界的过程就是将概念性的内容具体化成一个一个对象的过程—创建对象。
结构体和类都是抽象的,在真实世界中,他们只可以表示某个群体。无法确定这个群体中的某个独
立个体,而对象则是群体中独立存在的个体。
即: 现实存在的-----对象。
大脑中的想法—概念(类型)。
以上种种都是现实世界中人们熟悉的概念和方法,编写程序的目的是为了解决现实世界中的问
题,因此需要将现实世界的内容反映到计算机世界中,需要让计算机拥有“对象”和“类型”的意识,
C++支持这种实现。
计算机中的对象-----占据内存的变量。
计算机中的类型-----用于描述相似变量们的概念。
2、 抽象
面向对象中的抽象,是对具体问题的概括过程,概括出若干对象的公共性质并加以描述。本质上
是对问题的分析和认识的过程。一般来说,对于具体问题的抽象的过程包括两方面:
① 数据抽象 (有什么)
② 行为抽象 (能做什么)
举例:
(1)时钟
数据抽象: 时针 分针 秒针
int hour,int minute,int second;
行为抽象: 设置时间,显示时间
void setTime(int h,int m,int s);
void showTime();
(2)学生
数据抽象: 学号 姓名 专业 学校
int id,char name[10],char course[20],char school[100]
行为抽象:学习,娱乐,运动
void study(),void entertainment(),void sport();
3、封装
将抽象得到的数据和操作这些数据的函数进行有机的结合,形成一个整体。即将变量和操作这些
变量的函数代码进行组合,放到一起,形成一个整体,这就是C++中所谓的“类”,其中的数据和操
作数据的函数都是类的成员。
时钟类:
//时钟类
class Clock
{
int hour;
int minute;
int second;
void setTime(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
void showTime() {
cout << hour << ":" << minute << ":" << second << endl;
}
};
4、对象的产生
类是一个抽象的概念,是对具体问题的概括性描述,因此在计算机中定义了一个类就是告诉计算机
有一个新的类型出现了。真正能够运行的实际上是对象,该对象就会根据用户描述的类来进行产
生,产生对象的这一过程被称为类的“实例化过程”。
语法:
类名 对象名;
Clock myClk;//实例化
5、对象的大小
和结构体类似,类对象也仅仅计算该类中成员变量的大小,也像结构体一样遵守字节对齐规则。
如果一个类中没有成员变量,则称这个类为空类,一个空类对象的大小占据1字节,原因是对象是
客观存在在内存中的变量,为了识别这个变量,就必须开辟内存,而空类由于没有成员变量,因此
理论上也就没有空间,但是空类的对象是客观存在的,因此编译器为了标记该对象(让对象有访问
地址),所以会为该对象分配一字节大小的内存单元。
#include <iostream>
using namespace std;
//时钟类
class Clock
{
int hour;
int minute;
int second;
void setTime(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
void showTime() {
cout << hour << ":" << minute << ":" << second << endl;
}
};
class Demo
{
void hahaha(){}
};
int main()
{
int x;
Clock myClk;//实例化
cout << sizeof(myClk) << endl; //12字节
Demo obj;
cout << sizeof(obj) << endl; //1字节
Demo obj1;
return 0;
}
6、 操作对象
和结构体类似,操作对象就是操作对象中的成员,语法是:
对象名.成员名
eg:myClk.showTime();
7、数据的保护和共享
在使用对象访问成员时,需要将某些成员进行有效的保护,不允许随意的进行操作,同时将某些成
员进行共享,能够在类的外面被有效的访问。此时就需要对于类中的成员进行权限的设定。因此可
以定义不同的访问权限来使得封装的内容一部分充当类和外界的共享接口,另一部分被很好的保
护。在C++中通过使用public,protected,private关键字来对于类中的成员进行权限的设定。
格式:
class 类名
{
权限关键字:
成员
权限关键字:
成员
};
public :定义了类的内外交互结构,类内类外皆可访问;
protected :派生类内部可以访问,类的外部不能访问;
private : 类内部可以访问,类外部不能访问;
8、C++内置字符串操作类
#include <string>
string类的使用
①初始化
string str;
string str(“hello”);
string str = “hello”;
常用string类函数:
#include<string> //引入头文件
#include <iostream>
using namespace std;
int main()
{
//初始化
string str;
string str1("hello");
string str2 = "world";
cout << str << endl;
cout << str1 << endl;
cout << str2 << endl;
//常用函数
cout << str1.length() << endl;//计算长度
cout << str1.size() << endl;//计算长度
bool ok = str1.empty() ;//判断是否为空
str1.clear();//清空字符串对象
cout << str1.length() << endl;
const char* p = nullptr;
p = str2.data();//将string类型的数据转换成char*字符串
cout << p << endl;
str1 = "hello";
cout << str1 + str2 << endl;//连接两个string对象
string str3;
str3 = str2;
cout << str3 << endl;
return 0;
}
例:分文件形式---时钟类代码实现:
头文件:class.h
//类声明
#ifndef _CLASS_H_
#define _CLASS_H_
class Clock
{
private:
int hour;
int minute;
int second;
public:
void setTime(int h, int m, int s);
void showTime();
};
#endif
类定义文件:class.cpp
#include <iostream>
#include "class.h"
using namespace std;
//类定义
void Clock::setTime(int h, int m, int s){
if (h<0 || h>12 || m < 0 || m >= 60 || s < 0 || s >= 60)
{
cout << "时间设置出错" << endl;
}
else{
hour = h;
minute = m;
second = s;
}
}
void Clock::showTime(){
cout << hour << ":" << minute << ":" << second << endl;
}
测试类文件:test.cpp
#include <iostream>
#include "class.h"
using namespace std;
int main()
{
Clock myClk;
myClk.setTime(4, 11, 49);
myClk.showTime();
return 0;
}
注:若在类声明外部定义类中的成员函数, 要写上类函数的全名:
void Clock::setTime(int h, int m, int s)
总结:
类是面向对象设计方法的核心;
面向过程的程序设计的基本模块是由函数组成,解决问题时是以流程来分析,而面向对象程序设计
的基本模块是类,类是对逻辑上相关联的数据和函数的封装。是对问题的抽象描述,实际上类就是
满足描述现实事物而自定义的数据类型。
标签:语法,string,int,void,C++,---,对象,include,class From: https://blog.csdn.net/m0_60631703/article/details/142942613