猿问

如下内容,关于C++构造函数的问题

class A {}
class B{
private:
vector<A*> a;
//****
}
B类构造函数是否需要初始化a,怎么初始化?

慕运维8079593
浏览 134回答 2
2回答

交互式爱情

1.构造函数当然没有返回值,他只是描述了类初始化的行为。2.但是new是有返回值的啊!new返回的一定是类实例的指针啊,所以new tree返回的是tree*,所以构造函数跟返回该类的空间是没有关系的。下面举个例子给你看看:#include <iostream>#include <fstream>#include <algorithm>#include <string>#include <cstring>#include <vector>#include <queue>using namespace std;class tree {int value;public:tree(int v):value(v){}int get_value() {return value;}};int main(int argc, char *argv[]){//ifstream in_file("zhidao.text");queue<tree*> q;for (int i = 0;i< 10 ;++i ){tree * tmp = new tree(i);q.push(tmp);}//test codewhile(!q.empty()){cout<<q.front()->get_value()<<" ";q.pop();}cout<<endl;return 0;}

心有法竹

默认构造函数只在没有定义任何构造函数的时候系统才会自动生成。拷贝构造函数也是构造函数拷贝构造函数在没有显示定义的情况下系统会自动生成一个默认的拷贝构造函数b项如果定义了带参数的构造函数,也不会生成默认构造函数了,所以是错的
随时随地看视频慕课网APP
我要回答