- 信号和槽
- 连接函数 :connect
- 参数
- 参数1 信号的发送者
- 参数2 发送的信号(函数地址)
- 参数3 信号的接受者
- 参数4 处理的槽函数 (函数的地址)
1. C++中的类是一种构造类型,与 C 语言的结构体相似,但是进行了一些扩展,类的成员不但可以是变量,还可以是函数;通过类定义出来的变量也有特定的称呼,叫做“对象”
2.类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。
构造函数
定义了一个名称和类名相同,没有返回值的函数,这个函数称为构造函数。构造函数的特殊之处在于,它会在类实例化的时候被调用。
析构函数
对象实例化的时候,会调用构造函数,而对象销毁的时候,就会调用析构函数。
在类实例化对象的时候,如果没有定义构造函数,则编译器会合成一个默认的构造函数;
当有了对象后,如果没有定义析构函数,则编译器会合成一个默认的析构函数。
#include <iostream>
using namespace std;
class Dog
{
public:
Dog()
{
cout << "构造函数被执行" << endl;
}
~Dog();
};
Dog::~Dog()
{
cout << "析构函数被执行" << endl;
}
int main()
{
Dog dog1;
cout << "Hello World!" << endl;
return 0;
}
什么是基类和派生类:
创建新类时,并不需要创建全新的数据和成员函数,我们可以指明这个新类继承现有类的成员。此时,现有的类称为“基类”,继承实现的新类称为“派生类”。
#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 : public Animal//公有继承时基类中各成员属性保持不变,基类中 orivatel 成员被隐藏。,而不能访问 private.成员;派生类的对象只能访问基类中的 public 成员。
{
public:
void eat()
{
// this->weight=50.2
this->name="旺财";//派生类的成员只能访问基类中的 public/protected 成员
this->color="黑色";//派生类的成员只能访问基类中的 public/protected 成员
}
};
int main()
{
// cout << "Hello World!" << endl;
Dog dog1;
dog1.age=5;
dog1.run();
return 0;
}
◆公有继承时基类中各成员属性保持不变,基类中 orivatel 成员被隐藏。派生类的成员只能访问基类中的 oublic/protected 成员,而不能访问 private.成员;派生类的对象只能访问基类中的 public 成员。
◆保护继承时基类中各成员属性均变为 protected,并且基类中 private 成员被隐藏。派生类的成员只能访问基类中的 oublic/protected 成员,而不能访问 orivatel 成员;派生类的对象不能访问基类中的任何的成员
◆私有继承时基类中各成员属性均变为 private,并且基类中 private 成员被隐藏。派生类的成员也只能访问基类中的 oublic/protected 成员,而不能访问 private 成员;派生类的对象不能访问基类中的任何的成员。
函数重载
在同一个作用域内,声明几个功能类似以的同名函数,并且这些同名函数的参数个数、参数类型或者参数顺序不同,或者函数返回类型不同,那么就叫函数重载。
#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()
{
// cout << "Hello World!" << endl;
Dog dog1;
dog1.getWeight("黑色",10);
dog1.getWeight(10.2);
return 0;
}
#include <iostream>
using namespace std;
class Dog
{
public:
void getWeight(int weight) {
cout << "int类型狗的体重"<<weight<<endl;
}
void getWeight(double weight) {
cout << "double类型狗的体重"<<weight<<endl;
}
};
int main()
{
// cout << "Hello World!" << endl;
Dog dog1;
dog1.getWeight(10);
dog1.getWeight(10.2);
return 0;
}
#include <iostream>
using namespace std;
class Dog
{
public:
Dog(int weight) {
cout << "int类型狗的体重"<<weight<<endl;
}
Dog(double weight) {
cout << "double类型狗的体重"<<weight<<endl;
}
};
int main()
{
// cout << "Hello World!" << endl;
Dog dog1(50);
Dog dog2(50.2);
return 0;
}