default constructor was added.
This commit is contained in:
parent
3d23ff6168
commit
d3f67da786
Binary file not shown.
|
@ -0,0 +1,16 @@
|
|||
#include "shapes_defaultConstructor.h"
|
||||
#include <iostream>
|
||||
|
||||
int main(){
|
||||
Cube a(1.0);
|
||||
Cube b(3.0);
|
||||
|
||||
// Cube d{Cube()};
|
||||
Cube c(a);
|
||||
|
||||
c[0] = 100.0;
|
||||
|
||||
std::cout << "a.data-->"<< a[0] << " c.data--->" << c[0];
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
|
||||
#include "shapes_defaultConstructor.h"
|
||||
|
||||
|
||||
double& Cube::operator() (int i){
|
||||
try {
|
||||
if(i==1)
|
||||
return L;
|
||||
if (i==2)
|
||||
return W;
|
||||
if (i==3)
|
||||
return H;
|
||||
if (i<1 || i > 3)
|
||||
throw(i);
|
||||
}
|
||||
catch(int i){
|
||||
std::cout << "out of index" << i << "\n";
|
||||
exit(0);
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
Cube::Cube(double _L , double _W , double _H, long int _N ):N(_N){
|
||||
SetL(_L);
|
||||
Data = new double[N];
|
||||
Data[0] = _L;
|
||||
//std::cout << "Constructor was run!\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
void Cube::SetL(double _L){
|
||||
L = _L;
|
||||
}
|
||||
|
||||
const double& Cube::GetL() {
|
||||
return L;
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
#include <iostream>
|
||||
|
||||
class Cube {
|
||||
public:
|
||||
explicit Cube(double _L = 0, double _W = 0, double _H = 0, long int N = 1);
|
||||
|
||||
~Cube(){
|
||||
std::cout << "Destructor was run!\n";
|
||||
delete [] Data;
|
||||
}
|
||||
void SetL(double _L);
|
||||
|
||||
const double& GetL();
|
||||
double& operator() (int i);
|
||||
double& operator[] (int i){return Data[i];};
|
||||
|
||||
private:
|
||||
double L,W,H;
|
||||
double* Data;
|
||||
double tmp;
|
||||
int N ;
|
||||
};
|
||||
|
|
@ -14,25 +14,21 @@ class vector{
|
|||
}
|
||||
;
|
||||
protected:
|
||||
T** data;
|
||||
T* data;
|
||||
int N;
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
vector<T>::vector(int _N, T _Val ):N(_N){
|
||||
data = new T*[N];
|
||||
data = new T[N];
|
||||
for (int i{0}; i < N; i++){
|
||||
data[i] = new T(_Val);
|
||||
data[i] = T(_Val);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
vector<T>::~vector(){
|
||||
for (int i{0};i < N; i++){
|
||||
delete data[i];
|
||||
std :: cout << i << "\n";
|
||||
}
|
||||
delete [] data;
|
||||
}
|
||||
|
||||
|
@ -40,7 +36,7 @@ template <typename T>
|
|||
T vector<T>::operator[] (int i){
|
||||
try {
|
||||
if (i>=0 && i < N){
|
||||
return *data[i];
|
||||
return data[i];
|
||||
}
|
||||
else
|
||||
throw(i);
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
#include <iostream>
|
||||
|
||||
namespace myspace {
|
||||
template <typename T>
|
||||
class vector{
|
||||
public:
|
||||
vector(){}
|
||||
vector(int _N, T _Val);
|
||||
~vector();
|
||||
T operator[] (int i);
|
||||
void resize();
|
||||
int size(){
|
||||
return N;
|
||||
}
|
||||
;
|
||||
protected:
|
||||
T** data;
|
||||
int N;
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
vector<T>::vector(int _N, T _Val ):N(_N){
|
||||
data = new T*[N];
|
||||
for (int i{0}; i < N; i++){
|
||||
data[i] = new T(_Val);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
vector<T>::~vector(){
|
||||
for (int i{0};i < N; i++){
|
||||
delete data[i];
|
||||
std :: cout << i << "\n";
|
||||
}
|
||||
delete [] data;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T vector<T>::operator[] (int i){
|
||||
try {
|
||||
if (i>=0 && i < N){
|
||||
return *data[i];
|
||||
}
|
||||
else
|
||||
throw(i);
|
||||
}
|
||||
catch(int i){
|
||||
std::cout << "out of range, try to access "<< i << " out of " << N <<"\n";
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
/// end of namespace ///
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue