Android NDK入门:C++ 基础知识

为什么写这篇文章

本文算作是 《Android 音视频开发打怪升级》系列文章的“番外”篇,原本打算将本文的内容写在 《Android FFmpeg视频解码播放》 这篇文章中,因为要想学习 FFmpeg 相关知识,C++ 的基础知识是必不可少的。

但是写着写着发现,篇幅还是太长了,加上有部分小伙伴对 C++ 可能也比较熟悉,所以把此节独立成篇,更有利于不熟悉 C++ 的小伙伴学习查看,熟悉的小伙伴也可以直接跳过。

C++ 相对于 Java 还是有许多的不同之处,对于没有使用过 C++ 的人来说,如果要学习 NDK 开发,C++ 是第一道坎,必须要掌握。

本文通过对比的方式,把 C++Java 之间最基础,也是最常使用知识的异同标记出来,方便大家学习。

当然了,本文只是重点对 C++ 中最常用的,也是重点的知识进行讲解,如有时间,最好还是系统地学一下相关的基础知识。

本文你可以了解到

本文使用对比的方式,将 C++ 与我们非常熟悉的 Java 进行对比学习,介绍 C++Java 使用的异同,帮助大家快速入门 C++

一、 C++ 基本数据类型

C++ 提供了一下几种基础数据类型

类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void

同时,这些类型还可以被类型修饰符修饰,拓展出更多的数据类型:

类型修饰符 关键字
有符号类型 signed
无符号类型 unsigned
短类型 short
长类型 long

其中 signedunsigned 指定了数据是否有正负; shortlong 主要指定了数据的内存大小。

由于不同的系统,同个数据类型所占用的内存大小也不一定是一样的,以下是典型值:

类型 内存大小 范围
char 1 个字节 -128到127 或 0到255
unsigned char 1 个字节 0 到 255
signed char 1 个字节 -128 到 127
int 4 个字节 -2147483648 到 2147483647
unsigned int 4 个字节 0 到 4294967295
signed int 4 个字节 -2147483648 到 2147483647
short int 2 个字节 -32768 到 32767
unsigned short int 2 个字节 0 到 65,535
signed short int 2 个字节 -32768 到 32767
long int 8 个字节 -xxx 到 xxx
signed long int 8 个字节 -xxx 到 xxx
unsigned long int 8 个字节 -xxx 到 xxx
float 4 个字节 -xxx 到 xxx
double 8 个字节 -xxx 到 xxx
long double 16 个字节 -xxx 到 xxx

可以看到,

short 修饰符将原类型内存大小减小一半;

long 修饰符将原数据类型内存大小扩大一倍。

二、C++ 类

C++ 是一门面向对象的语言,类是必不可少的。其类的定义与 Java 大同小异。

Java 类通常声明和定义通常都是在同一个文件 xxx.java 中。

C++ 类的声明和定义通常是分开在两个不同的文件中,分别是 .h 头文件.cpp 文件

定义一个类

一个 类的头文件 通常如下:

// A.h

class A
{
private: //私有属性
    int a; 
    void f1();

protected: //子类可见
    int b;
    void f2(int i);

public: //公开属性
    int c = 2;
    int f3(int j);
    
    A(int a, int b); // 构造函数
    ~A(); //析构函数

};

对应的类实现文件 A.cpp如下:

// A.cpp

/**
 * 实现构造函数
 */
A::A(int a, int b): 
a(a),
b(b) {
    
}

// 等价于

/*
A::A(int a, int b) {
    this.a = a;
    this.b = b;
}
*/

/**
 * 实现析构函数
 */
A::~A() {
    
}

/**
 * 实现 f1 方法
 */
void A::f1() {

    
}

/**
 * 实现 f2 方法
 */
void A::f2(int j) {
    this.b = j
}

/**
 * 实现 f3 方法
 */
int A::f3(int j) {
    this.c = j
}

可以看到,.h 文件主要负责类成员变量和方法的声明; .cpp 文件主要负责成员变量和方法的定义。

但是,并非一定要按照这样的结构去实现类,你也可以在 .h 头文件中直接定义变量和方法。

比如:

// A.h

class A {
private:
    int a = 1;
    
public:
    void f1(int i) {
        this.a = i;
    }
}
C++ 类中几个特别的地方

1) 可见性 private、protected、public

这几个关键字和 Java 是一样的,只不过在 C++ 中,通常不会对每个成员变量和方法进行可见性声明,而是将不同的可见性的变量和方法集中在一起,统一声明,具体见上面定义的类A。<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值