- c++中使用
#if 0
xxx
xxx
xxx
#endif
代表将中间内容注释
-
命名空间是可以任意扩展的
-
在C++中,使用预处理器指令 #ifndef、#define 和 #endif 的目的通常是为了防止头文件的重复包含。这通常是在头文件的顶部完成的,而不是在某个特定的函数(如 add())内部。
例如,你可能有一个头文件 add.h,其中包含一些函数声明和宏定义:
cpp
// add.h
#ifndef __ADD_H__
#define __ADD_H__
// 函数声明或其他代码...
#endif // __ADD_H__
在这个例子中,ADD_H 宏定义用于确保 add.h 只被包含一次。如果 add.h 被多次包含,由于 ADD_H 已经被定义,因此头文件的内容不会被重复包含。
至于函数 add(),它可能是在其他源文件中定义的,而这个头文件只是包含了它的声明。函数 add() 本身不会定义这个宏。这个宏是用来管理头文件的包含的。
-
当你在代码中包含一个自定义的头文件时,编译器会在几个特定的目录中查找该头文件。这些目录包括:
当前目录:编译器首先在当前目录(即源代码所在的目录)中查找头文件。
编译器特定的系统头文件目录:不同的编译器可能有不同的系统头文件目录。例如,对于 GCC 和 G++,这些目录通常是 /usr/local/include、/usr/include 等。
编译器的标准库头文件目录:编译器通常还会在其安装目录下的标准库头文件目录中查找头文件。
链接器搜索的库文件目录:在链接阶段,链接器会在其搜索的库文件目录中查找所需的头文件。
如果编译器在以上目录中找不到所需的头文件,你通常需要使用 -I 选项指定额外的头文件搜索路径。例如:
bash
g++ main.cpp -I/path/to/headers -o myprogram
其中 /path/to/headers 是你的自定义头文件的路径。 -
c++转换 使用
static_cast<目的类型>(原变量) ,该函数返回目的类型变量
-
vim中命令模式光标移动到函数名,使用shift+k可以调用man手册的内容
-
c++中对struct的功能进行了提升,不仅可以定义变量,也可以定义函数,默认情况下,class的访问权限是私有的,但是struct的访问权限是public
-
头文件的顺序:1,自定义。2,c的头文件 。3,c++的头文件
day03
-
类的函数的实现可以在类外,需要添加(类名::) 类似上图Computer::
如图还有vim的快捷键使用 -
头文件形式,需要加#
-
类的构造函数(类的初始化),其中_ix(0) 等价于 _ix =0;
-
在构造函数中,数据成员的初始化顺序应该与其声明顺序相同
-
析构函数:没有返回类型,参数列表中不能有参数,对象在被销毁的时候会自动调用
class Point{
~Point(){
}
}
-
构造函数调用的时候会创建对象,创建对象的时候也一定会调用构造函数!
-
下面给出一个分为3个文件的例子
- 拷贝构造函数:当用一个已经存在的对象去初始化一个刚刚创建的对象,此时就会调用拷贝构造函数,注意,如果要自己定义要用引用型。
当形参与实参都是对象时候,会自动调用拷贝构造函数;
返回值是对象时候,也会调用。但是返回的是临时对象/匿名对象,特点:对象的创建和销毁都在本行
19. 能取地址的就是左值,
不能取地址的是右值,包括匿名对象,匿名变量、常量
加上const后是可以将
20.关于拷贝构造函数的参数问题