自学内容网 自学内容网

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)!