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

本文深入介绍了C++的基础知识,包括基本数据类型、类、指针、引用、多态和虚函数以及预处理,对比了C++与Java的异同,帮助Android开发者快速掌握NDK开发所需的C++技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文你可以了解到

本文使用对比的方式,将 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。

文末名片免费领取音视频开发学习资料,内容包括(C/C++,Linux 服务器开发,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs,Android NDK)以及

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值