一、C++相比C的改进
C语言是过程式编程语言,它以过程为中心,以算法为驱动。
C++是面向对象的编程语言,它是从C语言发展过来的。它以对象为中心,以消息为驱动的编程。
二、class和struct的区别
1、C语言中的struct和C++中的class的区别
在C语言中的struct中只能 定义成员变量,不能定义成员函数。
在C++中的class,可以定义成员变量,同时还可以定义成员函数。
2、C++中的struct和class的区别
在C++中扩充了对struct的用法,我们可以在struct中定义成员变量和成员函数。
区别:
class中的成员访问权限默认是private的
struct中的成员访问权限默认是public的
三、静态成员变量的使用
这题主要考的是我们对类的静态成员变量的理解。
类的静态成员被当做该类类型的全局变量,静态成员对于每个类的类型来说只有一个复制品,该类类型的所有成员都共享这个静态成员。
但是类的非静态成员对于每个类对象它们都有一个自己的复制品。
#include<iostream> using namespace std; class Myclass { public: Myclass(int a, int b, int c); void GetNumber(); void GetSum(); private: int A; int B; int C; int Num; static int Sum; }; int Myclass::Sum = 0; Myclass::Myclass(int a, int b, int c) { A = a; B = b; C = c; Num = A + B + C; Sum = A + B + C; } void Myclass::GetNumber() { cout << "Num = " << Num << endl; } void Myclass::GetSum() { cout << "Sum = " << Sum << endl; } int main() { Myclass M(3, 7, 10), N(14, 9, 11); M.GetNumber(); N.GetNumber(); M.GetSum(); N.GetSum(); system("pause"); return 0; }
我们在Myclass中定义了一个静态成员变量Sum,因为静态成员变量是该类类型所有成员共享的,所以在定义了N对象之后,它的Sum值就发生了变化,然后打印出来的结果就会和M打印个结果一样,是34。但是Num只是普通的成员变量,所以该类类型的对象都有一份复制品,因此M和N对象打印出来的结果不一样。
四、与全局对象相比,使用静态数据成员有什么优势
1、静态数据成员没有进入程序的全局的名字空间,因此不存在和程序中其他全局名字冲突的可能性
2、使用静态数据成员可以隐藏信息。因为静态成员可以是private成员,而全局变量不能。
五、构造函数和析构函数是否可以被重载
构造函数是可以被重载的。
析构函数是不可以被重载的,因为析构函数只能有一个。