一.构造函数需要注意的点
(1). 创建对象的时候,一定会调用构造函数,显示调用自己写的构造函数或编译器生成的缺省的构造函数。
(2).构造函数的函数名和类名一定是一样的,且无返回值和返回类型。
(3).创建对象的时候,如果参数列表和构造函数不一样,则对象创建失败。如果有多个构造函数,只要有一个匹配上,就是重载,可以创建成功。
#include<iostream>
using namespace std;
class Max
{
public:
Max(); //默认构造函数
Max(int a, int b); //有参构造函数
int Maxfunc(); //成员函数
private:
int x;
int y;
};
例如创建了一个Max类,构造函数和Max类一定是同名的。
Max::Max(int a, int b)
{
cout << "这是一个有参构造函数" << endl;
x = a;
y = b;
}
Max构造函数无返回值和返回类型
#include<iostream>
using namespace std;
class Max
{
public:
Max();
Max(int a, int b);
int Maxfunc();
private:
int x;
int y;
};
Max::Max(int a, int b)
{
cout << "这是一个有参构造函数" << endl;
x = a;
y = b;
}
int Max::Maxfunc()
{
return x > y ? x : y;
}
int main()
{
Max max(3, 7); //创建max对象
cout << max.Maxfunc() << endl;
return 0;
}
嗯。析构函数的话,当对象所在的函数已调用完毕时,系统自动执行析构函数,
就像new 创建对象后,会有delete释放内存。
class Max
{
public:
Max(); //默认构造函数
Max(int a, int b); //有参构造函数
int Maxfunc(); //成员函数
~Max(); //析构函数
private:
int x;
int y;
};
Max::~Max()
{
cout<<"我是析构函数"<<endl;
}
#include<iostream> using namespace std; class Select { private: int select; public: Select(); //默认构造函数 Select(int ans);//有参构造函数 ~Select(); void fun(); //成员函数 }; Select::Select() { cout << "我是默认构造函数" << endl; cout<<"你今天选择的态度是:" << endl; cout << "1.长风破浪会有时,直挂云帆济沧海" << endl; cout << "2.消磨时间" << endl; cout << "你的选择是:" << endl; } Select::Select(int n) { if (n == 1) { cout << "有参构造函数给你的回答:Rush Rush!" << endl; } else { cout << "还有一年就大三秋招了,你在想啥!" << endl; } } Select::~Select() { cout << "去Rush吧,让我析构函数给你打Call" << endl; } int main() { Select ans; int n; cin >> n; Select ans1(n); return 0; }
哈哈哈,有意思~,因为创建了俩个对象,一个ans,一个ans1,所以析构函数回答俩次