为什么我的vector不调用构造函数呢
#include"stdafx.h"#include<string>#include<vector>#include<iostream>usingnamespacestd...
#include "stdafx.h"#include<string>#include<vector>#include<iostream>using namespace std;class Sales_item{public: Sales_item():units_sold(0), revenue(0.0){} Sales_item(const string &book) :units_sold(0), revenue(0.0),isbn(book) { cout << "已调用" << endl; } Sales_item(const Sales_item &orig) :isbn(orig.isbn), units_sold(orig.units_sold), revenue(orig.revenue) { cout << "复制函数被调用了" << endl; } Sales_item& operator=(const Sales_item &rhs) { cout << "操作已调用" << endl; isbn = rhs.isbn; units_sold = rhs.units_sold; revenue = rhs.revenue; return *this; } private: double revenue; string isbn; unsigned units_sold;}; Sales_item foo(Sales_item item){ Sales_item temp; temp = item; return temp;}int main(){ cout << "vector" << endl; vector <Sales_item> ab(5); Sales_item a; Sales_item b("0-201-78345-X"); Sales_item c(b); a = b; Sales_item item = string("9-999-99999-9"); cout << "foo" << endl; Sales_item ret; ret = foo(item); return 0;}用的VS2013
展开
1个回答
展开全部
C++ 98 不支持直接在类成员声明的时候初始化.
C++ 11 似乎支持, 但是我用的编译器还不支持, 所以也不了解.
要这么写.
class DeckOfCards
{
public:
DeckOfCards()
: deck(50) // 这是 C++的成员初始化方法.
{
}
private:
vector deck;
};
构造函数后面接冒号, 接成员名 接构造参数, 多个的话用逗号隔开
C++ 11 似乎支持, 但是我用的编译器还不支持, 所以也不了解.
要这么写.
class DeckOfCards
{
public:
DeckOfCards()
: deck(50) // 这是 C++的成员初始化方法.
{
}
private:
vector deck;
};
构造函数后面接冒号, 接成员名 接构造参数, 多个的话用逗号隔开
追问
谢谢亲
我这个是这样子情况呢
我写了一个类,类里有了构造函数
然后呢在主函数里我写了
vector 变量(5)
按理它应该会调用我类里面的构造函数来初始化这个vector
但是呢没有很晕
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询