C++与C语言的区别
C语言: 面向过程
C++: 面向对象
区别: 面向对象对面向过程来说是多了一层封装,把需要用到的封装起来方便调用。
举例: 进行a*b的运算时,面向过程是直接运算,而面向对象把它封装成一个类进行调用,这里说的类是C++相比C语言特有的,是C++的灵魂,C语言的灵魂是指针。
类的定义
class student
{
public:
int a;
char b;
void test()
{
va = 888;
cout << va << ":test" << endl;
};
private:
int va;
protected:
char ve;
};
本质: class name{ };
- student就是类名。
- 类访问修饰符有public、private、protected几种类型。
- 类成员可以是函数,函数体了可以在类里面也可以在类外面。
注意:函数体在外面:需要加类名::函数名()
class student
{
public:
int a;
char b;
void test();
private:
int va;
protected:
char ve;
};
void student::test()
{
va = 888;
cout << va << ":test" << endl;
}
对象的定义
类相当于一个"变量"的封装,用类定义的"变量"就叫对象。
int main()
{
student id;
student *idi = new student;
id.a = 1;
id.b = 'b';
idi->a = 2;
idi->b = 'c';
cout << "Hello World!" << endl;
cout << id.a << endl;
cout << id.b << endl;
id.test();
cout << idi->a << endl;
cout << idi->b << endl;
idi->test();
return 0;
}
注意: 上边代码有两种对象定义方式:
1: 直接定义
2: 堆定义
两者区别:
直接定义 | 堆定义 | |
---|---|---|
调用方式 | 对象名.类成员 | 对象名->类成员 |
是否可删除 | 不可删除 | 可以删除(delete 对象名;) |
类的访问修饰符
- public:
表示函数和变量是公开的,任何人都可以访问。 - private:
表示函数和变量是私有的,只能在自己的类里面自己访问自己,不能通过对象访问(通过类里面函数可以强行访问)。 - protected:
表示只能在自己的类里面自己访问自己,但也可以通过派生类来访问。
类的重载特性
重载特性: 指的是类里面可以定义重名的函数,只要参数不一样就行。
当调用函数的时候,会根据参数区分是调用的哪一个函数。
构造函数与析构函数
构造函数与析构函数的函数名与类名一致。
构造函数: 假如我们定义了构造函数,当类对象被创建时,会触发构造函数。
析构函数: 假如我们定义了析构函数,当对象被删除或者生命周期结束的时候,就会触发析构函数。
注意: 构造函数可以重载,析构函数不能重载。
class student
{
public:
student();//构造函数
student(int a);//重载构造函数
~student();//析构函数
int a;
char b;
void test();
private:
int va;
protected:
char ve;
};
student::student()
{
cout << "adf" << endl;
}
student::student(int a)
{
cout << a << endl;
}
student::~student()
{
cout << "bye" << endl;
}
类的继承
继承: 可以在子类中继承父类的public和protected成员,Private成员不能被继承。
格式:
class 儿子:public 爸爸
class mystu: public student
{
public:
int m1;
};
注意: 继承会把无参数构造函数和析构函数继承,不能继承有参数构造函数。
虚函数与纯虚函数
虚函数: 有实际定义,派生类可以对其进行覆盖式替换。
纯虚函数: 空的虚函数就是纯虚函数。
虚函数的关键字:virtual
功能: 可以预留接口,方便开发。