class a
{
...
private:
a(const a& o);
a& operator=(const a& o);
};
然后居然没有实现(.h和.cpp中都没有),我理解即使是空也应该这样写啊:
class a
{
...
private:
a(const a& o) {}
a& operator=(const a& o) {}
};
请高手指教
C++中拷贝构造函数私有化就不需要实现了? 见到一段代码,简写如下:
答案:3 悬赏:40 手机版
解决时间 2021-01-02 18:40
- 提问者网友:人傍凄凉立暮秋
- 2021-01-01 19:13
最佳答案
- 五星知识达人网友:大漠
- 2021-01-01 19:33
C++ 允许只声明不实现
你举的那种写法估计是想彻底屏蔽掉这种调用
类内部调用会提示链接出错, 类外部调用会提示该构造函数是私有的, 这样就彻底干掉了...
你举的那种写法估计是想彻底屏蔽掉这种调用
类内部调用会提示链接出错, 类外部调用会提示该构造函数是私有的, 这样就彻底干掉了...
全部回答
- 1楼网友:詩光轨車
- 2021-01-01 20:17
申明不实现,表示不允许调用,如果调用了会链接不过
一般目的是为了防止不正确用拷贝和赋值,特别是类里有指针的情况下,懒得写拷贝和赋值函数,又怕调用到默认的会引起异常,所以...
- 2楼网友:患得患失的劫
- 2021-01-01 20:04
默认的拷贝构造函数是浅拷贝,即指源对象与拷贝对象共用一份实体。
通常重新定义是为了实现深拷贝,即指源对象与拷贝对象互相独立。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯