关于构造函数

kaiseer8828 2013-02-02 08:29:55
今天看了c++的构造函数,发现有许多种构造函数,复制构造还有赋值运算符什么的,我想问一下,在实际开发中有必要把他们都写出来吗,大家是不是都写啊,是不是类中元素包含指针就要写啊,菜鸟问题大神别不鸟我啊
...全文
260 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaiseer8828 2013-02-02
  • 打赏
  • 举报
回复
谢谢楼上各位大神 其实我还有两个问题发在硬件区了 硬件区好冷清 都没人鸟我
chinaliu123 2013-02-02
  • 打赏
  • 举报
回复
看你的实际需要。有时候需要重新实现拷贝构造函数,比如对象里有new出来的内存的时候。单体模式下要把拷贝构造、默认构造之类的隐藏起来。
stereoMatching 2013-02-02
  • 打赏
  • 举报
回复
不一定,你可以禁止你的class被copy或assign c++98

class A
{
private: //将copy constructor和copy assignment宣告为private,阻止copy
  A(A const&);
  A& operator=(A const&);
};
c++11,意思一样

class A
{
public: 
  A(A const&) = delete;
  A& operator=(A const&) = delete;
};
第三种解法,交给object管理 c++11

class A
{
  private:
    //shared_ptr会负责"shared"资料
    std::shared_ptr<int> data_; 
}

//....
A a, b;
a = b; //a和b的data_指向同一笔资料
第三种解法的变形,利用stl的container

class A
{
  private:
    std::vector<int> data_; //自动处理copy和assignment的问题
}
方法一箩筐,哪一种解法好全看你的需求 除非是设计效能很吃紧的基础库 否则现在都不建议用raw pointer管理资源 方法三和四其实都是RAII的范畴 因为RAII的帮助,我自己写的代码已经好久好久 不曾出现过memory leak等memory相关的问题了 如果我不用和别人合作,就不用为memory leak等 鸟问题烦恼了
xxyifan 2013-02-02
  • 打赏
  • 举报
回复
看你实际的应用吧,如果有指针时需要注意,区分一下member set和bit set
caoh110 2013-02-02
  • 打赏
  • 举报
回复
构造函数常用的是默认构造函数和拷贝构造函数,这两个经常用到,系统提供默认的,常常被重载。 类中不含有指针的也经常被重载,类中如果含有指针则一定要重载,因为编译器不会给指针赋初值。 A{ A(); //默认构造函数 A(A &a); //拷贝构造函数 }
苹果皮 2013-02-02
  • 打赏
  • 举报
回复
基本上是,如果类中成员有指针的 那么要么你把 赋值和拷贝 屏蔽了 要么就实现了
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧