C++风格的结构体与类类型

    技术2024-11-16  7

    结构体类型

    C++风格的结构体

    #include <iostream>   using namespace std;   #include<string>      struct student   {   private: // 数据是不能让外界直接调用修改的,但可以通过成员函数间接修改调用成员变量       int mark;       string name;       char sex;   public: // 在student定义的作用域内均可调用——由于我们在main函数外部定义的struct变量,因此它的作用域是global       void get_value(int vmark, string vname, char vsex)       {           mark = vmark;           name = vname;           sex = vsex;       }       int out_mark(void)       {           cout << mark << endl;           return 0;       }   };      int main()   {       student Student;       Student.get_value(89, "超级霸霸强", 'f'); // 用公有成员函数简介初始化成员变量       Student.out_mark(); // 调用公有成员函数   }

     

    C++风格的结构体已经与class类型相差无几,但是C语言中的struct类型变量只能存放数据不能再其中定义成员函数。

    C++风格的类(class)类型

    #include <iostream>   using namespace std;   #include<string>      class student // 仅将struct关键字换为class   {   private: // 数据是不能让外界直接调用修改的,但可以通过成员函数间接修改调用成员变量       int mark;       string name;       char sex;   public: // 在student定义的作用域内均可调用——由于我们在main函数外部定义的struct变量,因此它的作用域是global       void get_value(int vmark, string vname, char vsex)       {           mark = vmark;           name = vname;           sex = vsex;       }       int out_mark(void)       {           cout << mark << endl;           return 0;       }   };      int main()   {       student Student;       Student.get_value(89, "超级霸霸强", 'f'); // 用公有成员函数简介初始化成员变量       Student.out_mark(); // 调用公有成员函数   }  

     

    C++风格中结构体类型与类类型的异同点

    相同点:在C++中已经对struct进行了扩充,不仅可以声明成员变量,还可以声明成员函数,class关键字本身就是从struct发展而来的,所以struct支持的,class都支持。

    不同点:class默认的成员访问限定符是private,struct默认的成员访问限定符是public。

    因此struct定义的变量中的成员变量在默认情况下(默认限定符为public),外界可以直接访问修改成员变量的值,而class在默认情况下是使用的private限定符,外界在默认情况下是无法访问调用private所声明的成员函数和成员变量。

     

    Processed: 0.032, SQL: 9