文章目录
1. 认识类与对象
类是用来创建对象的,类创建对象的过程就叫实例化
面向对象四大特征:
特征 | 说明 | 具体情况 |
---|---|---|
抽象 | 抽出具体事物的普遍特性 | 把相同特性的函数放在同一类中 |
封装 | 把数据和处理包在一起 | 类中既可以定义变量成员又可以定义函数 |
继承 | 可以给别的函数使用 | 类中定义的成员可以相互使用 |
多态 | 同一个函数的多种形态,类似于重载 | 即使函数名同名他们也是不一样 |
2. 类的定义与对象创建
class 类名{
成员变量成员函数声明
};
class定义的最后是有 ; 分号的,不能忘记
在main主函数中:
定义class类和struct结构体类似
访问class类中的成员函数,是使用 . 来访问的
类的构成:
- 成员变量:在类定义中声明,可以在成员函数中直接调用
- 成员函数:对象相关操作,可以在类内实现或类外实现
2.1 示例1:复数的加法
我们定义一个简单的类,用来打印复数,复数有实部和虚部
#include <iostream>
using namespace std;
class Complex{
public: //访问限定符,加了才能访问,与private相对
int real;
int imag;
//设置实数
void SetReal(int r){
real = r;
}
//设置虚数
void SetImag(int i){
imag = i;
}
void Print(){
cout << real << "+" << imag << "i" << endl;
}
};
int main(){
Complex c;
c.real = 20;
c.imag = 3;
c.Print();
c.SetReal(10);
c.SetImag(5);
c.Print();
}
结果为:
20+3i
10+5i
知识点1——类的封装:访问限定符号
public: 公有下的成员才能访问
private: 私有下的成员不能访问
成员函数可以不在class中定义,在class中声明即可,但在外面书写函数时需要加限定符
#include <iostream>
using namespace std;
class Complex{
public:
// 只保留声明
void SetReal(int r);
void SetImag(int i);
void Print();
private:
int real;
int imag;
};
// 需要加类的限定符
void Complex::SetReal(int r){
real = r;
}
void Complex::SetImag(int i){
imag = i;
}
void Complex::Print(){
cout << real << "+" << imag << "i" << endl;
}
int main(){
Complex c;
// c.real = 20;
// c.imag = 3;
c.Print();
c.SetReal(10);
c.SetImag(5);
c.Print();
}
结果为:
0+0i // 随机值
10+5i
知识点2——对象做参数返回值
注意这两个函数在使用时的不同:
- Complex Add(Complex c1,Complex c2);
- Complex Complex::Add(Complex c);
创建函数时,在class内部和在class外部的使用情况是不一样的
内部的函数可以直接使用内部的real和imag,这表示就是c的
也可以把上述文件拆解出头文件,增加实部虚部相加功能:
complex.cpp 文件内容:
#include <iostream>
#include "complex.h"
using namespace std;
void Complex::SetReal(int r){
real = r;
}
void Complex::SetImag(int i){
imag = i;
}
int Complex::GetReal(){
return real;
}
int Complex::GetImag(){
return imag;
}
void Complex::Print(){
cout << real << "+" << imag << "i" << endl;
}
// 调用class外部的函数&#x