开发者社区> 问答> 正文

c++不可复制对象按值传递调用函数

class Base{
public:
 Base(){}
private:
Base(const Base &b)
{
    cout<<"copytor"<<endl;
}
};
class CB
{
public:
CB(Base &b):pb(&b){}
operator Base&()
{
    return *pb;
}
private:
Base *pb;
};
void foo(Base b) { }
int main()
{
Base b;
CB cb(b);
foo(cb);
}

展开
收起
a123456678 2016-03-04 18:12:31 1949 0
1 条回答
写回答
取消 提交回答
  • 我见过的重载操作符都是operator后直接跟一个操作符,不晓得你的operator Base&()是什么意思?另外foo函数的形参是Base类型,而你传递的是CB类型,后者只是将前者一个指针作为数据成员而已,没有派生关系,你用两个好不想干的类型来从CB类型到Base类型转换,你又想得到怎么样的结果呢?最后Base类型的复制构造函数确实不可访问,你的代码里面一些函数和类都没有具体执行代码或者数据成员,空壳一个,复制构造函数意义全无,从你代码来看,你只想看一个流程,这可能是钻了一个空子但是编译器没有在运行报错而已

    2019-07-17 18:52:42
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载