10 C++ 可变参数与友元函数

68 阅读1分钟

Android Ndk 学习笔记(目录)

1 可变参数

#include <stdarg.h> //  可变参数的支持

void sum(int count , ...){

    // 保存可变参数
    va_list  vp ;

    // 可变参数开始
    va_start(vp ,count);

    for (int i = 0; i < count; ++i) {
        // 获取可变参数
        int number = va_arg(vp,int);
        cout << number << endl;
    }
    // 可变参数结束
    va_end(vp);

}

void function01(){
    sum(4,1,3,4,5);
}

2 C++ static 关键字 需要先定义 ,后实现 然后才能修改值

class Person{

public:
    static int age;
    char * name ;

    static void updataAge(int ages){
        age = ages;
    }
    // 方法后面通过 const 修饰 则表明该方法,无法被修改 为只读方法
    void showInfo() const {
//        this->name = "";// 无法修改name 的值
    }
};

int Person::age = 43 ;

/**
 * 静态的总结:
 * 1.可以直接通过类名::静态成员(字段/函数)
 * 2.静态的属性必须要初始化,然后再实现(规则)
 * 3.静态的函数只能取操作静态的属性和方法(Java)
 */
void function02(){
    cout << Person::age << endl ;

    Person::updataAge(54);

    cout << Person::age << endl ;
};

3 C++ 对象中 ,为什么需要this 代表自己

4 友元函数

class Person2{

private:
    int age = 12;

    //友元函数的定义
    friend void updataAge(Person2 * person2 , int newAge);

public:
    int getAge(){
        return this->age;
    }
};
//友元函数的实现
void updataAge(Person2 * person2 , int newAge){
    person2->age = newAge;
}
void function03(){

    Person2 p2 ;
    cout << p2.getAge() << endl;
    updataAge(&p2,43);
    cout << p2.getAge() << endl;
}
E:\C\Project\C++\cmake-build-debug\C__.exe
12
43

Process finished with exit code 0