📜  struct 中的 c++ 中的默认访问修饰符 - C++ (1)

📅  最后修改于: 2023-12-03 15:35:10.377000             🧑  作者: Mango

C++中的默认访问修饰符

在C++中,struct和class都是用来定义类的关键字,它们之间的唯一区别是默认的访问修饰符不同。当定义一个类时,如果不明确指定访问修饰符,那么默认的访问修饰符就会生效。

访问修饰符

访问修饰符有3种:public、protected和private。它们的含义如下:

  • public:公有的,在类内部和外部都可以访问;
  • protected:保护的,只有在类内部和子类中可以被访问;
  • private:私有的,只有在类内部可以被访问。
默认访问修饰符
  • 在struct中,默认的访问修饰符为public;
  • 在class中,默认的访问修饰符为private。
如何使用默认访问修饰符
1.使用struct

当我们使用struct定义一个类时,如果没有指定访问修饰符,那么默认的访问修饰符为public。例如:

struct Student{
    int id;
    string name;
    void display(){
        cout<<"id:"<<id<<",name:"<<name<<endl;
    }
};

这里的id和name都是public的,可以直接在类外使用:

Student s;
s.id = 1;
s.name = "Tom";
s.display(); // 输出:id:1,name:Tom
2.使用class

当我们使用class定义一个类时,如果没有指定访问修饰符,那么默认的访问修饰符为private。例如:

class Student{
    int id;
    string name;
public:
    void display(){
        cout<<"id:"<<id<<",name:"<<name<<endl;
    }
};

这里的id和name都是private的,在类外无法直接访问:

Student s;
s.id = 1; // 编译错误:'int Student::id' is private within this context
s.name = "Tom"; // 编译错误:'std::string Student::name' is private within this context
s.display(); // 输出:id:1,name:Tom
总结

在C++中,使用struct和class定义类时,默认的访问修饰符不同。当我们需要定义一个所有成员都是public的类时,可以使用struct;当我们需要定义一个所有成员都是private的类时,可以使用class。如果不确定访问修饰符,最好明确指定,避免出现意外情况。