class Int
{
private:int value;
public:Int(int x = 0) :value(x){cout << value << endl;}~Int(){cout << value << endl;}void SetValue(int x )value = x;}};
构造函数可以使用:进行初始化,而初始化只能进行一次,所以只能在构造函数使用:
普通函数不可以使用。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Int
{
private:int value;
public:Int(int x = 0) :value(x){cout << value << endl;}~Int(){cout << value << endl;}void SetValue(int x ){value = x;}int GetValue()const{return value;}void Print(int value)const{printf("%d \n", value);}
};
int main()
{Int a(10);a.Print(20);
}
这时我们的Print打印的将是20,因为此时形参与类中变量名相同,局部优先将打印20。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Int
{
private:int value;
public:Int(int x = 0) :value(x){cout << value << " " << this<< endl;}~Int(){cout << value <<" " << this << endl;}void SetValue(int x ){value = x;}int GetValue()const{return value;}void Print()const{printf("%d \n", value);}
};
int main()
{Int a = 10;int x = 100;a = x;a.Print();return 0;
}
在a=x时,会隐式类型转化从而再次调用构造函数和析构函数