C++学习:第三章C++语言基础 - (七)静态成员函数、运算符重载、临时对象

1. 局部变量

下面这样写是可以的,返回时复制了一份

int gg(int a, int b){
    int x = a+b;
    return x;
}

下面这样写是不可以的,因为返回值是局部变量,在方法结束时就销毁了。而返回该值的引用就会出现错误,编译都通不过的。

int& gg(int a, int b){
    int x = a+b;
    return x;
}

2. 静态成员函数

这里的静态返回值不属于任何对象,因为他是静态的,他是属于这个类,调用时F::bb()要这样写。注意,静态成员函数不可以用 this。

class F{
public:
    F(){}
    static int bb(){return 0;}
}

静态成员初始化在类的外面

Class A{
    static int a;
    A(){}
}

int A::a = 0;

int main(){
    A aa;
    return 0;
}

3. 匿名对象(临时对象)

引用常量或者临时值时必须有 const,见下面两个写法。因为返回的f_t为临时变量,如果有 f1+f2+f3 的运算,其实际的逻辑是f1+f2的结果临时值再参与计算的,即

f1   +  f2 = f_t1;

f_t1 +  f3 = f_t2;

而临时值是不能被修改的,所以当调用 f_t1+f3 时就会报错,因此必须加const。

写法1

F operator << (F f1, F f2 ){
    F f_t = f1+f2;
    return f_t;
}

写法2

F operator << (const F f1,const F f2 ){
    F f_t = f1+f2;
    return f_t;
}

编译器可以对匿名对象进行优化,减少其复制等损耗。

可以用创建临时对象来初始化对象。

F operator << (const F f1,const F f2 ){
    return F (f1+f2);//临时对象也是对象,有输出会打印在屏幕上
}

Teacher t = Teacher(name, age);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值