c构造函数和析构函数
Program 1:
程序1:
#include<iostream>
using namespace std;
class Sample
{
private:
int X;
int Y;
public:
Sample(int x, int y)
{
X = x;
Y = y;
}
void set(int x, int y)
{
X = x;
Y = y;
}
void print()
{
cout<<X<<" "<<Y<<endl;
}
};
int main()
{
Sample S[2];
Sample *PTR;
PTR = S;
PTR[0].set(10,20);
PTR[1].set(30,40);
PTR[0].print();
PTR[1].print();
return 0;
}
Output:
输出:
main.cpp: In function ‘int main()’:
main.cpp:32:12: error: no matching function for call to ‘Sample::Sample()’
Sample S[2];
Explanation:
说明:
The above code will generate a syntax error because in the main() function we created an array of objects that must be instantiated by the default constructor, but in the class, the default constructor is not defined.
上面的代码将产生语法错误,因为在main()函数中,我们创建了必须由默认构造函数实例化的对象数组 ,但是在类中,未定义默认构造函数。
Program 2:
程式2:
#include <iostream>
using namespace std;
class Sample {
private:
int X;
int Y;
public:
Sample(int x, int y)
{
X = x;
Y = y;
}
void set(int x, int y)
{
X = x;
Y = y;
}
void print()
{
cout << X << " " << Y << endl;
}
};
int main()
{
Sample S[2] = { Sample(0, 0), Sample(0, 0) };
Sample* PTR;
PTR = S;
PTR[0].set(10, 20);
PTR[1].set(30, 40);
PTR[0].print();
PTR[1].print();
return 0;
}
Output:
输出:
10 20
30 40
Explanation:
说明:
In the above program, we created a class