📅  最后修改于: 2023-12-03 15:35:10.377000             🧑  作者: Mango
在C++中,struct和class都是用来定义类的关键字,它们之间的唯一区别是默认的访问修饰符不同。当定义一个类时,如果不明确指定访问修饰符,那么默认的访问修饰符就会生效。
访问修饰符有3种:public、protected和private。它们的含义如下:
当我们使用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
当我们使用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。如果不确定访问修饰符,最好明确指定,避免出现意外情况。