C++杂乱
字符串
/*
*C语言的(C++同样适用哦)
*
*/
char s[] = "111";
char *s1 = "1111";
/*
*C++语言的
*/
string s ="111";
static静态变量
static静态变量,唯一副本,就是说,不管你用这个类生产了多少个实例,所有这个类的实例,的这个静态变量,都是指向一个内存地址,其实也可以说他们都指向的是同一个变量,而且静态变量只分配一次内存
友元
友元类或者友元函数,他们是可以访问类里面的所有的成员,只需要加上friend
重载
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。 与其他函数一样,重载运算符有一个返回类型和一个参数列表。
Box operator+(const Box& b)//其中 this 对象是左侧操作数。这样,它要求左侧操作数是调用对象,右侧操作数作为函数参数传递进来
{
Box box;
box.length = this->length + b.length;
box.breadth = this->breadth + b.breadth;
box.height = this->height + b.height;
return box;
}
Box3 = Box1 + Box2;
这里的this->length是Box1 , b.length是Box2
解释,返回类型是box,然后重载+号,这里需要注意点哦
你看这里是一个参数,但是调用它的时候应该是Box1+Box2,那么为什么这里是两个参数缺不会报错呢?那是因为,我们看的是一个参数,但是呢有一个参数是隐式的,这里呢Box1,是调用的对象,而Box2是传递的参数
虚函数
虚函数
虚函数 是在基类中使用关键字 virtual 声明的函数,如果不声明的话,假如派生类和基类有着同样的成员函数那么就会链接到基类的函数中,所以建议把基类的函数变成虚函数
纯虚函数
virtual int area() = 0; 就是有关键字virtual和=0这样的字样,纯虚函数呢,在基类中又不能对虚函数给出有意义的实现,这个时候就会用到纯虚函数。您可能想要在基类中定义虚函数,以便在派生类中重新定义该函数更好地适用于对象
基本内置类型
类型 关键字
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t
endl是换行符
cout << "type: \t\t" << "************size**************"<< endl;
用<<代替,
typedef为一个以有类型取一个新名字(宏定义给常量起别名)
typedef int feet;
feet x; //此时x是int类型
extern 可以在任何地方声明变量{
extern int x
void main{}
}
函数在声明时提供函数名,函数的定义可以在任何地方
int func()//函数声明
int func(){//函数定义
pass
}
变量的声明和定义
变量的声明是向程序说明变量名,并没有进行赋值
变量的定义是向程序说明变量名和初始化的值
定义可以说是声明
声明不能说是定义
局部变量的变量名可以和全局变量的变量名一样,但是在**函数内**局部变量的值可以覆盖全局变量的值
局部变量被声明时,系统不会对此初始化,但是全局变量被定义时会被系统初始化,初始化的值如下
数据类型 初始化默认值
int 0
char '\0'
float 0
double 0
pointer NULL
整数常量
前缀是
0x或者0X代表的是十六进制
0代表的是八进制
没有前缀就是十进制
后缀是
U的是无符号(unsigned)
L的是长整形(Long)
30ul(无符号长整形)**ul是小写
定义常量(常量变量名大写)
#有两个方法,define预处理器 和 关键字const
define预处理器
#define WIDTH 5 //定义常量WIDTH 注意后面没有分号
#define NEWLINE '\n'
int main(){
pass;
}
关键字const
const type variable = value;
const int WIDTH = 5;
修饰符类型
signed 有符号
unsigned 无符号
long 长整形
short 短整形
限定符 含义
const const 类型的对象在程序执行期间不能被修改改变。
volatile 修饰符 volatile 告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量。对于一般的变量编译器会对变量进行优化,将内存中的变量值放在寄存器
中以加快读写效率。
restrict 由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。
define INTEGER int #define会去寻找INTEGER替换int
```C++
#define INTEGER int
using namespace std;
INTEGER main()
{
cout<<"1111"<<end;
return 0;
}
```
include //将文件iostream复制过来
先编译后链接
#include <iostream>
#include "Log.cpp"
using namespace std;
void Log(const char* message);
int Multiply(int a,int b)
{
Log("l");
return a*b;
}
int main()
{
//Log("likang");
cout<<"aaaa"<<endl;
cin.get();
}
//Log.cpp
#include <iostream>
using namespace std;
void Log(const char* message)
{
cout<<message<<endl;
}
memset
memset是初始化函数
memset(要初始化对象,要替换的,替换的长度)
int cnt[4];
memset(cnt,0,sizeof(cnt));
map
map实现的key和value对应
map<int,int>a;
max
max(int x, int y)
返回最大的数
GetPrivateProfileString 读配置文件
第一个参数:文件中的字段名(里面的小标题)
第二个参数:文件中的变量名(里面的标识)
第三个参数:要是找不到第一个参数和第二个参数,它的默认值,缺省默认值
第四个参数:存储的位置
第五个参数:存储的大小
第六个参数:文件的位置