C++的符号
1.运算符重载和符号的多种含义
C++中的符号
1.单冒号(:)
类名 后面的冒号 是用来定义类的继承
构造函数 后面的冒号 起分割作用,是类给成员变量赋值的方法,初始化列表
public:和private:后面的冒号
struct 位域结构名- 类型说明符 位域名:位域长度
2. 双冒号(::)
直接用在全局函数前,表示是全局函数
域操作符
表示引用成员函数及变量,作用域成员运算符
3. &
01.位运算符 位运算符作用于位,并逐位执行操作。& 与或非中的与
按位与操作,按二进制位进行"与"运算
02. & 作引用
03. & 取地址
&(引用) ==>用来传值,出现在变量声明语句中位于变量 左边时,表示声明的是引用
&(取地址运算符) ==>用来获取首地址,在给变量赋初值时出现在等号右边
或在执行语句中作为一元运算符出现时,表示取对象的地址.
引用在赋值=的左边,而取地址在赋值的右边
和类型在一起的是引用,和变量在一起的是取址
指针指向一块内存,它的内容是所指内存的地址;
引用则是某块内存的别名,引用不改变指向。不能建立数组的引用
4. *
01.算数运算符 两个操作数相乘
02.声明指针的星号 *
5. ~
01.取反运算符,按二进制位进行"取反"运算
02.作为析构函数
6. ->
类成员访问运算符
7. <<
二进制的左移运算符
2.同一功能不同表达
( )(函数调用),->(成员访问),,(逗号),[](下标)
. :成员访问运算符
.*, ->* :成员指针访问运算符
3.多琢磨的内容
01.指针:
指针 数组 函数 空指针
有效的指针声明 int *ip; // 指针变量的声明
定义一个指针变量、
把变量地址赋值给指针、
访问指针变量中可用地址的值
02.形参和实参
传值参数:
在内存中开辟新的内存空间,然后把变量值复制到该内存空间来。
引用参数:直接把变量的地址传过来。
引用参数的好处就是不用产生临时变量,减少内存开销。因此常用于对大对象的操作。
而常引用就是为了保护对像不被修改
复制构造函数是构造函数的一种,也称拷贝构造函数,
它只有一个参数,参数类型是本类的引用
当用一个对象去初始化同类的另一个对象时,会引发复制构造函数被调用。
为形参的对象,是用复制构造函数初始化的,而且调用复制构造函数时的参数,就是调用函数时所给的实参
如果函数的返冋值是类 A 的对象,则函数返冋时,类 A 的复制构造函数被调用
C++之vector
#include <vector> std::vector
Buffer.resize(nSize) 调整容器的大小,使其包含n个元素 void resize (size_type n);
Buffer.data()
std::string
std::stringstream
vector<char>如何转string
vector是
表示可变大小数组的序列容器。
vector也采用的连续存储空间来存储元素。可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。
与其它动态序列容器相比(deques, lists and forward_lists), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。
对于其它不在末尾的删除和插入操作,效率更低。比起lists和forward_lists统一的迭代器和引用更好。
本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间
代码示例
定义,初始化,遍历等
#include <iostream>
#include <vector>
#include <typeinfo>
using namespace std
int main(int argc, char* argv[])
{
std::cout << "Now start";
std::vector<int> IntTest;
for (int i = 0; i < 10; ++i)
{
IntTest.push_back(i);
}
std::cout << typeid(IntTest).name();
for (std::vector<int>::iterator iter = IntTest.begin(); iter != IntTest.end(); ++iter)
{
std::cout << *iter << std::endl;
}
return 0;
}
//通常在include文件中
// 自定义函数调用其他函数前必须先声明-提供函数原型
#include <iostream>
#include <vector>
using namespace std;
void ShowVec(const vector<int>& valList);
int main(int argc, char* argv[])
{
std::cout << "Now start";
std::vector<int> IntTest;
for (int i = 0; i < 10; ++i)
{
IntTest.push_back(i);
}
ShowVec(IntTest);
return 0;
}
void ShowVec(const vector<int>& valList)
{ int count = valList.size();
for (int i = 0; i < count;i++)
{
cout << valList[i] << endl;
}
}