1、::的作用:
C++中,双冒号::为作用域解析符,表示一个成员变量或成员函数所属的作用域。
在文件开头使用using关键字引入一个命名空间后,在后续代码中就可以直接使用该命名空间的类型和成员。
头文件中可以包含很多个命名空间,在标准库中,很多头文件定义了很多相同的类、函数和对象,并且通常将它们放在同一命名空间中,通常是std的命名空间。
示例:vector和string都使用的std命名空间
#ifndef VECTOR_H
#define VECTOR_H
namespace std {
template <typename T>
class vector {
{
public:
vector();
~vector();
void push_back(const T& value);
// 其他成员函数...
private:
// 内部数据结构...
};
}
#endif // VECTOR_H
#ifndef STRING_H
#define STRING_H
namespace std {
class string {
public:
string();
string(const char* str);
~string();
void append(const string& other);
// 其他成员函数...
private:
// 内部数据结构...
};
}
#endif // STRING_H
2、C++是对C语言的优化与进步,因此在C语言中需要进行大量指针才能实现的功能,在C++只需要一个函数操作即可。因此在C++中环境中编写代码时,若涉及大量C代码实现某功能时,一定要检索一下有没有此类的C++库函数,千万要记住,可以事半功倍,还能少出错!!
3、结构体无法直接转换为数组
因为结构体涉及字节对齐问题,因此无法直接将结构体转换为数组,尽量也不要用结构体++的形式,若有结构体对齐的行为,这样很容易出问题。
C++中如想将整数的结构体转换为整数数组,则可使用,使用接口reinterpret_cast转换将结构体类型转换为整数数组类型的引用。
4、C++中的容器
C++容器与C语言中数组的区别:
C++容器没那么高大上,就是C语言的数组、链表、结构体等数据结构形式+C++的成员函数实现的一组高级数据结构。
C++中的容器一般是由STL标准模板库提供,如vector、list、deque,可以动态地删除、添加或者改变元素,容器的大小根据需要而改变,容器中可以存储任意对象。
容器是C++中针对数组只能存储一类对象、经常发生越界错误、无法动态定义长度大小等原因应运而生的的一类STL模版库。
使用上:在C++中定义一个容器后,然后检索其删除、添加的库函数,直接使用即可。
vector类似于数组的实现,在一块儿连续的地址空间中进行数据的存放。
优点为初始化时就可以动态分配数组大小,不必定义角标。可以使用push_back进行动态增加数组元素。缺点是因为没有角标,故无法直接知道数组元素大小,但如果要使用vector的话,一定要配合vector的成员函数,例如size()函数用于获取vector的长度,push_back用于添加元素等等,在vector初始化完毕后,vector是有边界的,得益于库函数才能实现动态操作容器,向vector传入比它大的数组肯定会导致踩内存的情况。
list是类似于消息队列的实现形式,LIFO的形式,同样有一堆成员函数,届时直接检索使用即可!
5、2025/01/23更
以后要全力扑到驱动方向了,这可能是自己最后一天接触C++的东西了,感慨万千,曾几何时,抱着总有一天C++会对C进行彻底的替代的认知,于是较为认真地学习了C++相关内容。在中间件开发过程中,在C++框架配合C语言内核的整体架构下,应用了C++的类、容器(vector、list)、String等关键字,因为应用的少,故只能算浅浅地入门。C++,希望下次工作遇见时能更娴熟地操作你!能认真地把你学习一遍!