C++笔记二(静态成员函数、匿名对象)

一、静态成员函数

  • 静态成员函数是指在类定义中使用关键字static定义的成员函数。
  • 与普通成员函数不同的是,静态成员函数不属于任何类的实例,它属于类本身。
  • 静态成员函数不需要通过类的实例调用,可以使用类名直接调用。普通成员函数需要通过类的实例才能调用。
优点
  • 静态成员函数不会操作任何实例变量,它只能访问静态变量、静态函数和传递的参数。由于没有实例变量的操作,静态成员函数更加简洁和高效。
  • 静态成员函数可以直接由类名调用,不需要创建类的实例,使用类名即可调用它,更加方便快捷。
  • 静态成员函数是全局可见的,并可以用作命名空间中的全局函数。
实例
#include <iostream>
using namespace std;

class A {
public:
	A() : x(0) {} //初始化列表
    static void f(A a);

private:
    int x;
};

void A::f(A a)
{
    //静态成员函数只能引用属于该类的静态数据成员或静态成员函数。
    // cout<<x; //对x的引用是错误的
    cout << a.x << endl; //正确
}

int main() {
    A::f(A()); //A()为匿名对象
    return 0;
}

二、匿名对象

  • 匿名对象是没有命名的临时对象,由编译器在程序执行期间自动创建。
  • 匿名对象通常在需要一个对象来执行某个操作,但不需要持有该对象的引用或指针的情况下使用。
  • 匿名对象通常是作为函数参数传递,或者通过函数返回值使用。
举例:
//通过创建一个匿名对象,将其作为参数传递给函数,而无需为该对象创建一个具有名称的对象
#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass() { cout << "构造函数" << endl; }
    ~MyClass() { cout << "析构函数" << endl; }
};

void myFunction(MyClass obj) {
    cout << "函数调用" << endl;
}

int main() {
    myFunction(MyClass()); // 传递匿名对象
    return 0;
}
  • Main函数调用了myFunction函数,将一个MyClass的匿名对象作为参数传递给该函数。在调用期间,该匿名对象将被自动创建,用于执行函数myFunction,并在函数调用结束时被销毁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值