1. C++的struct和class的区别
差异特性 | struct | class |
---|---|---|
成员访问范围 | 默认public | 默认private |
继承关系访问范围 | 默认public | 默认private |
{}初始化 | 1、纯数据或纯数据+普通方法的结构体支持;2、带构造函数或虚方法的结构体不支持 | 不支持 |
1.1 成员访问范围的差异
1. struct
struct Person {
int age;
}
Person person = new Person();
person.age = 12;
可以正常的编译和执行。
2. class
class Person {
int age;
}
Person person = new Person();
person.age = 12; // 编译出错,应改为public int age;
【扩展】如果不增加public关键字,又想在某个类如ClassA中能访问到这个Person类中的成员,可以通过友元类(friend class Xxx)来将Person中的private和protected的成员共享出去。
Person类可以这么编写:
struct Person {
friend class ClassA;
int age;
}
Person person = new Person();
person.age = 12;
在ClassA中,就可以访问Person中的所有成员了。
void ClassA:setAge() {
Person *person = new Person();
person->age = 12;
}
关于友元类的使用,可见c++论坛:https://cplusplus.com/forum/beginner/147733/文章来源:https://www.toymoban.com/news/detail-704517.html
1.1 继承关系访问范围的差异
指的是子对象是否可访问到父对象中的成员。文章来源地址https://www.toymoban.com/news/detail-704517.html
1. struct : struct
struct SBase {
public:
int age = 0;
SBase() = default;
virtual ~SBase() = default;
};
struct Person : SBase {
public:
Person() = default;
virtual ~Person() = default;
};
int main(int argc, const char **argv)
{
Person* child = new Person();
child->age
到了这里,关于C++的struct和class的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!