欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > C++重启/秋招已保底备战春招

C++重启/秋招已保底备战春招

2025/2/6 12:43:29 来源:https://blog.csdn.net/weixin_45302337/article/details/143534480  浏览:    关键词:C++重启/秋招已保底备战春招

C++面向对象高级开发(上)学习笔记

第三节:

问题1:C++中对构造函数使用初始列和函数体中赋值结果是一样的,但是为什么使用初始列的形式更好

解答:最重要的还是1和2,效率更高避免调用默认构造函数,针对某些常量成员变量和引用类型只能在初始列中进行初始化,不能再构造函数体内赋值,因为本身就是常量。

第五节:

问题1:inline complex operator - 请问这里的inline的作用是不是将操作符重载这个函数内联到complex这个类里面作为成员函数

回答:误解了inline的作用,实际上跟宏差不多;

问题2:操作符重载

回答:如果是成员函数,这个this有点像python中类里面的self;当然这里对于参数的输入this还是隐藏的不过可以直接用this;

问题3:为什么不用void作为返回值?

回答:实际上只考虑单次使用函数当然可以,但是如果要连续使用那么返回引用更加合适,不会出错;

问题4:为什么不能返回引用

回答:首先是全局函数,不是成员函数因此没有this这个隐藏变量

        之所以不能返回引用,就是函数里面返回的这个值是新创建出来的,也就是作用域是函数,一旦函数结束就死亡了,如果返回引用,那么引用到什么?会出现悬空引用的情况?不像+=这个函数,本身输入参数已经包含了一个,返回的参数不过是对输入参数的修改,因此即使函数结束也不会随之死亡,因此可以返回引用;

问题5:cout是不是需要返回const 已经返回类型

回答:考虑到多个 <<连用还是需要返回ostream&,引用类型,并且由于以前的<<不知道现在的复数,因此也需要对<<进行操作符重载以适合现在的数据类型;

问题6:带指针类的拷贝构造和拷贝赋值

回答:对于字符串这种长度未知的参数,对类的private中的数组长度设定在模板中也是不知道的,因此可以使用指针作为指向数据,给出字符串长度后可以动态调整;

问题7:头文件防卫式声明 如何确定名字

回答:

问题8:static对成员变量成员函数的作用

回答:static成员变量,属于类,所有类对象共享这一个变量。

成员函数也是一样不依赖于任何对象,可以通过类直接调用;

问题9:组合和继承

回答:三种-复合、委托、继承 还是比较好理解

复合 相当于我拥有你的功能,因此构造由内而外,析构由外而内;

委托:就是拥有的是指针,可以理解为一个接口。通过指针将任务委托给右边的类;

当需要实现的时候才创建,而复合因为不是指针 而是实实在在的拥有另一个东西,因此创建是同步的;

继承:子类继承父类,也就是is -a的概念,子类也是父类的一种

构造和析构的顺序和复合类似;

问题10:虚函数和多态

回答:子类要想通过继承实现父类的特性的同时又能够拥有自己的特性,因此需要虚函数辅助实现

虚函数能够让子类override父类的函数,只需要父类的函数加上了pure virtul or virtual;

继承示例:这也是一个有名的设计模式,模板模式,通用的操作比如打开文件放在父类实现,但是像写或者读这样的因子类不同而不同就需要子类来override,通过this就实现了子类覆写的函数;

侯捷——C++面向对象高级开发(下)(兼谈对象模型)学习笔记 - 知乎

C++面向对象高级开发(下)(兼谈对象模型)

问题1:non-explict one argument ctor/ explict ctor

回答:两者区别是,non是隐式的转换自动利用构造函数将数据类型进行转换

explict需要显式转换;

问题2:智能指针

回答:智能指针 实际上是对 普通指针 的包装,可以说改造了指针的功能

迭代器:也是一种智能指针不过是在容器下面,用于遍历容器的指针,因此还需要有++--这类指针位移的符号;

关于第二个->的解释,通过operator*()获得的是容器对象的引用,然后再&获得的是这个引用的地址也就是指针,因此结果是一个指向Foo对象的指针,那么这个时候用->获得里面的方法;

这里还需要注意的一点是,如果是指向对象的指针如果想要使用对象的方法可以用

fooPtr->method()

如果是对象,那么直接使用方法

(*fooPtr).method()

这里&实际上也有两种理解,放在变量前面就是取地址,放在类型后面就是取别名;

问题3:function like class

回答:首先明白什么是函数,有小括号操作符可以被视作函数,

用类实现像函数一样,实际上就是对操作符()进行重载,从而可以输入参数;

借助 namespace相当于把不同的函数划分到了不同的域

问题4:成员模板

回答:成员模板,其实相当于类是一个模板,然后类里面的成员函数又存在一个模板,也就是成员函数的输入可以不同于类的模板类型,从而使得类的成员能够处理不同的类型,更加灵活;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com