- 在C++和C中static关键字的用法
static修饰局部变量、全局变量(不能被外部引用extern|未初始化的值为0)、函数(不能被外部引用extern),不能修饰auto类型的指针(因为计算机先为静态变量分配空间,后再分配auto类型的变量不可以使用指针指向不存在的变量地址。)
C++:静态数据成员和静态成员函数是属于类的,不属于类的实例,它们在所有类的实例中是共享。
2、在C++和C中const关键字的用法
const:作用主要对于值的保护(例如指针,引用,返回值,保护函数形参)
修饰指针时:讲一下在*前和后和2个const
所有非常成员函数,都可以对数据成员进行修改,如果想让一个成员函数不能对数据成员修改,那么就要用到常成员函数实现。
如果想在常成员函数中修改数据成员,可以加入mutable(可以去除数据成员的常属性)
3、详细说一下QT中基于TCP的通信中服务器端操作
1> 创建一个QTCPServer的类对象,该类对象就是一个服务器
2> 将该对象调用listen函数设置成监听状态,监听时,可以监听指定的ip地址,也可以监听所有主机地址,可以通过指定端口号,也可让该服务器自动选择
3> 当有客户端发来连接请求时,该服务器就会自动发射一个newConnection的信号,我们可以将该信号连接到自定义的槽函数中处理相关逻辑
4> 在槽函数中,可以调用nextPendingConnetion函数可以获取最新连接的客户端套接字的地址,我们可以将该套接字存入到客户端容器中
5> 此时,服务器已经和客户端建立连接请求了,如果有客户端向服务器发来数据,那么对于的客户端套接字就会发射一个readyRead的信号
6> 读取套接字中的数据使用read、readLine、readAll函数来完成
7> 向套接字中写数据,可以使用write函数完成
8> 关闭服务器,使用close来完成
4、详细说一下QT中基于TCP的通信中客户端操作
1> 实例化一个QTCPSocket的类对象
2> 调用该对象的成员函数connectToHost连接到服务,连接服务器时,需要给定服务器的ip地址和端口号
3> 如果连接服务器成功,那么该客户端就会自动发射一个connected的信号,我们可以将该信号连接到槽函数中处理相关逻辑
4> 如果服务器有数据向客户端发来,那么该客户端就会自动发射一个readyRead信号,我们可以在该信号对应的槽函数中处理数据
5> 可以使用read、readLine、readAll读取客户端套接字中的数据
6> 可以使用write向服务器发送数据
7> 使用成员函数disConnectFromHost断开与服务器的连接
8> 如果成功断开与服务器的连接,那么该套接字就会自动发射一个disconnected的信号