关注
class A{};
编译器处理后,就相当于:
class A
{
public:
A(); //默认构造函数
A(const A&); //拷贝构造函数
~A(); //析构函数
A& operator=(const A& rhs);
A* operator&(); //取地址运算符
const A* operator&() const;
};
现在做如下说明:
看完上面的例子后,大家可能会觉得声明一个空类,大家都认为会生成 构造函数、拷贝构造函数、析构函数、赋值运算符号、取址运算符const、取址运算符。
其实不然啊,那么一个空类什么时候不是空类了呢? 其实对于这样的一个空类来说,是完全没有必要的,而编译器也不是这样做的。编译器的做法是:只有你需要用到这些函数并且你又没有显示的声明这些函数的时候,编译器才会贴心的自动声明相应的函数。
class A{};
对于单独申明的一个空类A来说,编译器编译过程中,并没有发现创建A实例。
所以对于空类A来说,编译器是不会给类A生成任何函数的。
如果我们在代码中需要生成一个A的实例
比如
A a;
编译器就会根据上面的实例,给类A生成构造函数和析构函数。
当使用
A b(b);
编译器就会生成类A的拷贝构造函数。
A c;
c = a;
编译器生成赋值运算符函数
A &d = a;
编译器生成取地址运算符函数。
查看原帖
点赞 评论
相关推荐
2025-12-23 12:11
湖北理工学院 前端工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招什么时候投? #
6857次浏览 107人参与
# 牛友的春节生活 #
3450次浏览 98人参与
# 春节前,你还在投简历吗? #
9561次浏览 128人参与
# 从夯到拉,锐评职场mentor #
2464次浏览 50人参与
# 牛客AI体验站 #
13940次浏览 260人参与
# 实习到现在,你最困惑的一个问题 #
2707次浏览 83人参与
# 春节提前走,你用什么理由请假? #
6245次浏览 157人参与
# 备战春招/暑实,现在应该做什么? #
2405次浏览 87人参与
# 聊聊Agent开发 #
18303次浏览 458人参与
# 距离春招还有一个月,你现在是什么开局? #
3777次浏览 80人参与
# 推荐一个值得做的AI项目 #
4970次浏览 145人参与
# 暑期实习什么时候投? #
4554次浏览 110人参与
# 听劝,这个简历怎么改 #
380587次浏览 1826人参与
# 机械人的秋招小目标 #
28327次浏览 239人参与
# 我的AI电子员工 #
27543次浏览 184人参与
# 参加完秋招的机械人,还参加春招吗? #
108154次浏览 704人参与
# 腾讯工作体验 #
567920次浏览 3712人参与
# 实习的内耗时刻 #
221441次浏览 1643人参与
# bilibili求职进展汇总 #
180849次浏览 1074人参与
# 字节跳动工作体验 #
704995次浏览 6303人参与
