1 struct默认的数据访问控制是public的,class默认的访问控制是private的。
struct可以添加private/public修饰符,但是如果没有显式添加,则默认的访问权限为public,class默认为private。
2 C++中,struct也可以继承。但是,struct默认的继承访问权限是public的,而class是private。
3 使用大括号赋值。struct如果没有定义构造函数(是的,在C++中,struct也可以定义构造函数),可以使用大括号对struct的数据成员进行赋值。
class只有在成员变量全部是public的情况下,才能使用大括号进行赋值。
总结
1 类及对象,使用class, 便于分权限封装;
2 数据结构,使用struct,便于数据继承访问,默认全是public;
3 class 完全可以替代struct;
先上代码
#include <iostream>
#include <unordered_map>
#include <vector>
#include <string>
struct BlockerAttr {
BlockerAttr() : capacity(10), channel_name("") {}
explicit BlockerAttr(const std::string& channel)
: capacity(10), channel_name(channel) {}
BlockerAttr(size_t cap, const std::string& channel)
: capacity(cap), channel_name(channel) {}
BlockerAttr(const BlockerAttr& attr)
: capacity(attr.capacity), channel_name(attr.channel_name) {}
size_t capacity;
std::string channel_name;
private:
std::string addr;
};
class Blocker : public BlockerAttr {
public:
explicit Blocker(){};
virtual ~Blocker(){};
private:
std::string home;
};
int main()
{
Blocker b;
BlockerAttr * attr = new BlockerAttr(2, "test channel");
std::cout << b.capacity << std::endl;
std::cout << attr->capacity << std::endl;
delete attr;
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » C++ class 和 struct 区别
发表评论 取消回复