c++之函数

1.const成员函数

    const Date d2(d1);或者const Date d2=d1;//拷贝构造函数

void show() const

{

    cout<<_year<<"-"<<_month<<"-"<<_day<<endl;

}

Date* operator&()

{

    return this;

}

const Date* operator&() const//构成重载

{

return this;

}

2.内联函数:没有压栈的开销

inline int add(int a,int b)

{return a+b;}

①以空间换时间,省去调用函数额开销。代码很长或者有循环或者递归的函数不宜使用内联②inline对于预编译区而言只是一个建议。编译器会自动优化,如果定义为inline的函数体内有递归等等,编译器优化时会忽略掉内联。③inline必须和函数定义在一起,才能成为内联函数,仅将inline放在声明前是不起作用的。④定义在类内的成员函数默认定义为内联函数。

3.友元

class Date{

friend void show(const Date& d);//友元函数

friend AA;//友元类

friend ostream operator<<(ostream& out);

}

4.static成员

size_t Date::_count=;

static int GetCount()//无this指针

{

return _count;

}

5.N中构造拷贝构造的优化
Test1中调用了0次AA的拷贝构造函数,2次AA的赋值运算符函数的重载。
Test2中调用了1次AA的拷贝构造函数,2次AA的赋值运算符函数的重载。
Test3中调用了1次AA的拷贝构造函数,3次AA的赋值运算符函数的重载。
class AA
{};
AA f (AA a)
{
return a ;
}
void Test1 ()
{
AA a1 ;
a1 = f(a1);
}
void Test2 ()
{
AA a1 ;
AA a2 = f(a1);
}

void Test3 ()
{
AA a1 ;
AA a2 = f(f(a1));

猜你喜欢

转载自blog.csdn.net/qq_40408483/article/details/79735862