1、explicit 关键字
class Date
{
public:
Date(int year)
:_year(year)
{
cout<< " Date(int year)" << endl;
}
Date(const Date& d)
{
cout<< "Date(const Date& d)" << endl;
}
private:
int _year;
};
int main()
{
Date d1(2022);
Date d2 = 2022;
const Date& d3 = 2022;
return 0;
}
void func(const string& s)
{}
int main()
{
string s1("hello");
string s2= "hello";
string str("insert");
func(str);
func("insert");
return 0;
}
class Date
{
public:
Date(int year)
:_year(year)
{
cout<< " Date(int year)" << endl;
}
~Date()
{
cout << " ~Date()" << endl;
}
private:
int _year;
};
int main()
{
Date d1(2023);
Date(2022);
return 0;
}
class Solution
{
public:
int Sum_Solution(int n)
{
return 0;
}
};
int main()
{
Solution slt;
slt.Sum_Solution(10);
Solution().Sum_Solution(10);
return 0;
}
2、static成员(静态成员变量属于类的(只有所属这个类的对象才能修改),不同于全局变量(任何对象都能修改))
2.1 定义和性质
class A
{
public:
A()
{
++_scount;
}
A(const A& t)
{
++_scount;
}
static int GetCount()
{
return _scount;
}
private:
static int _scount;
};
int A::_scount = 0;
int main()
{
A aa1;
A aa2;
return 0;
}
2.2 静态成员的使用场景
class Sum
{
public:
Sum()
{
_sum += _i;
++_i;
}
static int GetSum()
{
return _sum;
}
private:
static int _sum;
static int _i;
};
int Sum::_sum = 0;
int Sum::_i = 1;
class Solution
{
public:
int Sum_Solution(int n)
{
Sum a[n];
return Sum::GetSum();
}
};
class StackOnly
{
public:
static StackOnly CreateObj()
{
StackOnly so;
return so;
}
private:
StackOnly(int x)
:_x(x)
{}
private:
int _x;
};
int main()
{
StackOnly so3 = StackOnly::CreateObj();
return 0;
}