C++的一些语言特性

变量

静态局部变量是什么时候初始化的

静态局部变量(static local variable)是在函数第一次调用时初始化的。与普通的局部变量不同,静态局部变量在函数退出后不会被销毁,而是保留其值直到程序结束。这意味着下次调用该函数时,静态局部变量将继续保留其上次调用时的值。

Read more

C++的面向对象

C++面向对象

面向对象的本质

具体的一个事物就是对象,多个同类对象聚合成一个类,类包含数据和动作(成员函数)

三大特征:

  • 封装:将具体的实现过程和数据封装成一个函数,只能通过接口访问,降低耦合性。
  • 继承:子类继承父类的特征和行为,子类有父类的private方法,成员变量,子类可以重写父类的方法。但是如果用final就不能继承,不能重写修改。
  • 多态:子类同一消息不同反应,基类指针呈现不同的表现方式,一般用虚函数来实现。
Read more

C++关键字和库函数

库函数

strcpy函数的缺陷

在于不检查目的缓冲区的大小边界,直接全部赋值。会产生覆盖其他变量的问题的。

1
2
3
4
5
6
7
char * strcpy(char * strDest,const char * strSrc) {
    if ((NULL==strDest) || (NULL==strSrc)) 
    throw "Invalid argument(s)"; 
    char * strDestCopy = strDest; 
    while ((*strDest++=*strSrc++)!='\0'); 
    return strDestCopy;
}

一般会用memcpy_s

Read more

C++多线程

条件变量

条件变量顾名思义,就是就是线程A1,A2, A3.. 由于不满足某些条件而挂起。然后当条件被其他线程满足了后,A1,A2,A3…就因为满足了条件被唤醒继续自己的工作,参考以下代码:

Read more