c++代码中构造函数代码中~的意思 如

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

    今天同事遇到一个关于拷贝构造函数代码的问题。代码大致如下:

 咋一看貌似没囿问题,但是gcc却编译不过去报错如下:

在上面代码中,test类明明已经有构造函数代码和拷贝构造函数代码为什么gcc一定要我给出一个默认構造函数代码出来呢?这个问题就牵涉到了C++构造函数代码中的初始化列表问题了。

        在编写构造函数代码的时候很多人都会意思到使用初始化列表来达到避免多次构造的资源损耗,但是在编写拷贝构造函数代码的时候,我们大部分时间都是这样写的

而这就是造成这个問题的症结所在了。对于类而言成员变量仅仅是声明一个变量,而真正的定义是在构造函数代码中做的所以,如果在构造函数代码(包括拷贝构造函数代码)中如果成员变量不是在初始化列表中进行初始化的话,像上面代码中的拷贝构造函数代码的写法其实过程就相当於先调用一次默认构造函数代码对成员变量进行初始化,然后再调用=操作对成员变量进行赋值因此,这就出现了上述gcc要求提供默认构造函数代码的问题了

        为了解决这个问题,我们借助初始化列表这个很好的东东把代码改成如下,问题就不见了

可以直接把init中的代码放入构造函數代码;

如果觉得构造函数代码内容太多就放入一个成员函数init()中,这样感觉有模块化点

//把老师的编号放进vector容器

你这个程序不是可以調用吗就是class最后一个括号少了个分号

你对这个回答的评价是?

我要回帖

更多关于 构造函数代码 的文章

 

随机推荐