天天看點

c++ 帶預設值的構造函數 定義與實作分離

//stack.h
           
#include <vector>
using namespace std;

template<class T>
class Stack{
private:
	int maxsize;
	int top;
	vector<T> vec;
public:
	Stack(int ms = 0);


};
           
//stack.cpp
           
#include "stack.h"

template<class T>
Stack<T>::
Stack(int ms):maxsize(ms){
    cout<<"get it"<<endl;
}
           
//main.cpp
           
<pre name="code" class="cpp">#include <iostream>
#include "stack.cpp"
using namespace std;

int main()
{
	Stack<int> s(2);
    Stack<int> s1;
	return 0;
}
           

采取上述方法定義的stack類構造函數可用。

當 stack.h 中構造函數定義更改為:

Stack(int);

同時,stack.cpp中實作改為:

Stack(int ms = 0):maxsize(ms){}時,報錯。

将 stack.h 中構造函數定義更改為:

Stack(int ms = 0):maxsize(ms), top(-1);

stack.cpp 中實作改為:

Stack(int ms){...}

報錯

c++

繼續閱讀