C++ this原理与可变参数及友元函数友元类分步详解用法

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

C++ this原理与可变参数及友元函数友元类分步详解用法

lpf_wei   2022-11-24 我要评论

1.c++可变参数的应用

#include <iostream>
#include <stdarg.h>  //可变参数的支持
using namespace std;
void add(int count,...){
    va_list vp; 
    va_start(vp, count);
    // 取出可变参数的一个值
    int number  = va_arg(vp, int);
    cout << number << endl;
    // 取出可变参数的一个值
    number  = va_arg(vp, int);
    cout << number << endl;
    // 取出可变参数的一个值
    number  = va_arg(vp, int);
    cout << number << endl;
    // 越界之后取出来的是0
    number  = va_arg(vp, int);
    cout << number << endl;
    // 关闭阶段
    va_end(vp);
}
int main() {
    add(546, 6,7,8);
    return 0;
}

日志输出:
/home/ms/workspace/study/ndk/CPlusStudy/cmake-build-debug/CPlusStudy
可变参数输出
6
7
8
0

  • #include <stdarg.h> 如果使用可变参数,需要导入这个
  • Java的可变参数: int …
  • C++的可变参数写法:…
  • va_list vp : 可变参数的动作
  • va_start(vp, count):参数一:可变参数开始的动作vp,参数二:内部需要一个 存储地址用的参考值,如果没有第二个参数,内部他无法处理存放参数信息
  • 越界之后取出来的是0

项目中的应用:

int add(int count,...){
    va_list va;
    va_start(va,count);
    for (int i = 0; i < count; ++i) {
        int number=va_arg(va,int);
        cout << number << endl;
    }
    va_end(va);
}
int main() {
    std::cout << "可变参数输出" << std::endl;
    add(3, 6,7,8);
    return 0;
}

日志输出:
可变参数输出
6
7
8

第一个参数count可以作为可变参数的数量。

2.static 静态变量与静态方法

class Douluo {
public:
//    static char * name="唐三";  静态变量不能直接初始化  编译不通过
    static char * name;
    Douluo() {
//         name="唐三";  //静态变量不能在构造方法初始化
    }
    static void update() {
//        name="唐三"; //静态变量不能在静态方法初始化
        cout<<"name="<<name<<endl;
    }
    void update2() {
        // 运行报错
//         name="唐三";  //静态变量不能在非静态方法初始化
    }
};
/*静态变量正确初始化姿势*/
char* Douluo::name="唐三";
int main() {
//    std::cout << "可变参数输出" << std::endl;
//    add(3, 6,7,8);
    std::cout << "static的应用" << std::endl;
    Douluo douluo;
//    Douluo::name="唐三";  //静态变量不能在main方法初始化 会报错
    douluo.update2();
    Douluo::update(); // 类名::可以调用静态函数  调用静态方法的正确姿势
    return 0;
}

通过实际操作可知:

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们