explicit关键字 和 static成员
- 1、explicit 关键字
- 2、static成员(静态成员变量属于类的(只有所属这个类的对象才能修改),不同于全局变量(任何对象都能修改))
-
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 = 0, int y = 0):_x(x), _y(0){}private:int _x = 0;int _y = 0;
};int main()
{StackOnly so3 = StackOnly::CreateObj();return 0;
}