亲宝软件园·资讯

展开

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

lpf_wei 人气:0

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

项目中的应用:

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;
}

通过实际操作可知:

加载全部内容

相关教程
猜你喜欢
用户评论