c++->内部类 匿名对象
内部类:(例如:b定义在a类中)
注意事项:
(1)内部类b可以直接使用外部类的static变量,但是并不属于外部类的友元!!!!
#include <stdio.h>
#include <iostream>
using namespace std;
class a {
class b {
void print(){
cin >> aa;
cin >> bb;
}
};
private:
int aa;
int b;
static int bb;
};
int main() {
return 0;
}
可以拿上面这个代码去尝试(会发现有aa有红线警告)
(2)sizeof去计算a时不会加上这个b类;
(3)外部有跟它重名的就没办法限制相同名字类别的产生;
#include <stdio.h>
#include <iostream>
using namespace std;
class a {
class b {
};
};
class b {
};
int main() {
return 0;
}
(4)如果a是专门为b所创造的类,那么置于private处就能让该类只能被b使用。
匿名对象
注意事项:
(1)正常的匿名对象介绍:
展示匿名对象的生成和销毁过程:
可以看出匿名函数只有一行的生命周期。
(2)引用匿名函数(需要const!!!!)
a& aaa = a();单纯这样可是不行的,因为这里使用匿名函数相当于生成了一个临时对象。
const a& aaa = a(); 这样就没有问题了
那你肯定会疑惑了,不是只有一行的生命周期吗?那这里去给aaa有什么意义?其实在const修饰之后,a()的生命周期就被延长了,直到aaa要销毁了他才销毁。
(3)实际运用的场景:
如果在类似栈push这个函数,如果你push的是一个类对象,那你要怎么给缺省参数?那是不是就可以用匿名函数去给?
原文地址:https://blog.csdn.net/2301_81172092/article/details/144006740
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!