C++ 练习3 [牛客]

网友投稿 586 2022-09-08

C++ 练习3 [牛客]

C++ 练习3 [牛客]

C++ 练习3 [牛客]

​​1.题目​​

​​1. 结构体可以有构造函数​​​​2. 地址​​​​3.构造函数的调用​​​​4.可能代码体积膨胀​​​​5.虚函数继承(多态)​​​​6.二维数组初始化​​​​7.指针与引用​​​​8.fork()函数​​​​9.vector遍历并删除erase()​​​​10.explicit 与 protected​​​​11.构造函数的调用​​

​​2.总结​​​​3.更新日志​​

1.题目

1. 结构体可以有构造函数

在c++中类和结构体的唯一区别是 默认状态下,类中的成员默认是私有的,结构体中的成员默认是公有的。c++中的结构体和c中的结构体的区别 c++中的结构体引入了成员函数,继承,访问控制等面向对象的特性 c中的空结构体的大小为0,c++中的空结构体和空类一样,大小是1c++中空类的大小是1的原因 空类可以实例化成不同的对象,不同的对象在内存中的地址不同,所以隐含地加入一个字节来标识不同的对象。

2. 地址

3.构造函数的调用

语句“MyClass a[4]”定义了4个MyClass对象,分别为a[0],a[1],a[2],a[3],调用4次构造函数;语句“MyClass *p[5]”定义了5个指向MyClass对象的指针变量,分别为*p[0],*p[1],*p[2],*p[3],*p[4]但 定义指针并没有实例化对象 ,所以不调用构造函数。因此,执行该语句共调用MyClass的构造函数4次

4.可能代码体积膨胀

这里的膨胀是指代码编译时较编辑时体积大。 宏定义,模板,内联函数都能在编辑时精简我们的代码。但在编译时宏定义会文本替换,模板会加上类型(类似java泛型),内联函数也会替换成函数代码。D选项是容易爆栈,不是代码区。

5.虚函数继承(多态)

这道题目可以这么去拆分就很好理解了: ((B *)(&c))->func() ==》 B *temp; temp = &c; temp->func(); ==》 这不就是一个典型的多态问题,用 基类指针指向派生类对象 ,所以肯定调用的是 派生类C对象的func函数,输出 C test((B)c).func(); ==》 不涉及指针的操作,自然就没有多态行为的发生。

6.二维数组初始化

7.指针与引用

8.fork()函数

fork函数的特点概括起来就是“调用一次,返回两次”在父进程中调用一次,在父进程和子进程中各返回一次。

9.vector遍历并删除erase()

erase()函数的特点就是删除当前的元素,并自动指向下一个元素,所以这里iter不需要在自增了

10.explicit 与 protected

11.构造函数的调用

2.总结

3.更新日志

2022.7.7 整理

欢迎交流、讨论、指正~ 不正确、不理解之处欢迎评论留言~

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python Selenium 常用方法总结(不断补充)(python123平台登录)
下一篇:关闭windows计划重启
相关文章

 发表评论

暂时没有评论,来抢沙发吧~