C++一些基本概念

1.strcpy是拷贝直到\n时结束,所以长度上要增加一个字节,例如原来是一个字符的char[s]="s",
到了string中就是"s\n",strcpy是拷贝2个字符,如果拷贝目标地址只有一个字节长度,就会有问题。

2.每个线程一个栈(stack),堆(heap)空间共享,栈空间线程独立,全局变量进程内共享.
另外在windows下如果用dll,那么每个dll有自己的数据段,全局变量在dll内共享.
有些第三方库内部有隐含的全局变量,使用多线程调用这些库的时候要小心.
全局变量指static或者在函数体外面定义.
类没有定义变量,类只是定义数据结构.对象才是变量,成员变量是对象这个变量内嵌的变量

3.一个问题:

pure virtual method called
terminate called without an active exception
Aborted

看是否有对象被delete两次了。

4.建议不要在构造函数里做一些初始化资源之类的事情。构造函数只做不得不做的东西,初始化单独写一个init函数,创建后显式调用。

5.如果函数参数传的是对象的引用,那么这个参数是不需要判断空间是否分配的,这里的空间是肯定会有的。

6.struct和class的区别就在于默认的访问是public还是private,其他都一样

struct S
{
 std::string  type;
 unsigned int len;
 unsigned char* body;
public: 
 ~S(){
  delete[] body;
  body = NULL;
 }
};

struct也有继承

7. 返回引用的用法
方法定义:
static A& getInstance();

调用时
A  a = getInstance();  另外创见一个对象a,将getInstance()返回的对象赋值给a
A& a = getInstance();  创建一个类似指针的A的引用,所指向的对象就是getInstance()。

8.变量初始化

只有静态变量被系统初始化了,例如int类型的静态变量被初始化成0,如果是对象的成员变量,需要自己显式地初始化,否则不知道是个什么数字。

9.管道文件

mkfifo /dev/filename

set_fl(STDOUT_FILENO, O_NONBLOCK); /* set nonblocking */

发布了5 篇原创文章 · 获赞 0 · 访问量 2515
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章