1.类模板和概念
C++ 中的类是一种构造类型,与C语言的结构体相似,但是进行了一些扩展,类的成员不但可以是变量,还可以是函数;通过类定义出来的变量也有特定的称呼,叫做“对象”。 类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。
不写关键字默认private
2.类的实例化
堆和栈
#include <iostream>
using namespace std;
class Dog
{
// 不写关键字的时候,就是private属性的
public:
string name;
int age;
void run() {
cout << "狗会跑!" << endl;
}
protected:
double weight;
};
int main()
{
// 从栈中实例化对象
Dog dog1;
dog1.name = "旺财";
cout << dog1.name << endl;
dog1.run();
// 从堆中实例化对象,要用delete删除
Dog *dog2 = new Dog;
dog2->age = 3;
cout << dog2->age << endl;
delete dog2;
return 0;
}
3.析构函数和构造函数
在类实例化对象的时候,如果没有定义构造函数,则编译器会合成一个默认的构造函数;当有了对象后,如果没有定义析构函数,则编译器会合成一个默认的析构函数。
#include <iostream>
using namespace std;
class Dog
{
public:
Dog()
{
cout<<"这是构造函数"<<endl;
};
~Dog()
{
cout<<"这是析构函数"<<endl;
};
};
int main()
{
Dog dog1;
return 0;
}
4.类的继承
什么是基类和派生类: 创建新类时,并不需要创建全新的数据和成员函数,我们可以指明这个新类继承现有类的成员。此时,现有的类称为“基类”,继承实现的新类称为“派生类”。
例:
#include <iostream>
using namespace std;
// 这个就是基类,也叫父类
class Animal
{
public:
string name;
int age;
void run() {
cout << "狗的年龄:" << age << endl;
}
private:
double weight;
protected:
string color;
};
// 这个类是派生类,也叫子类
class Dog : private Animal
{
public:
void eat() {
this->name = "旺财";
this->color = "黑色";
}
};
int main()
{
Dog dog1;
return 0;
}
5.函数重载
#include <iostream>
using namespace std;
class Dog
{
public:
void getWeight(string color, int weight) {
cout << "int类型狗的体重:" << weight << endl;
}
double getWeight(double weight) {
cout << "double类型狗的体重:" << weight << endl;
return weight;
}
};
int main()
{
Dog dog1;
dog1.getWeight("黑色", 10);
dog1.getWeight(10.2);
return 0;
}