摘要:
拷贝初始化和直接初始化 直接初始化直接调用与实参匹配的构造函数,拷贝初始化总是调用拷贝构造函数。 拷贝初始化首先使用指定构造函数创建一个临时对象,然后用拷贝构造函数将那个临时对象拷贝到正在创建的对象。 可以发现用=就是拷贝构造函数 string str1("I am a string");//语句1 阅读全文
摘要:
override: 当在父类中使用了虚函数时候,你可能需要在某个子类中对这个虚函数进行重写,以下方法都可以: class A { virtual void foo(); } class B : public A { void foo(); //OK virtual void foo(); // OK 阅读全文
摘要:
C++中const和static的作用 static: 不考虑类的情况 隐藏。不加static的全局变量和函数具有全局可见性,可以在其他文件中使用,加了之后只能在该文件所在的编译模块中使用 默认初始化为0,包括未初始化的全局静态变量与局部静态变量,都存在全局未初始化区 静态变量在函数内定义,始终存在 阅读全文
摘要:
编译阶段 define是在编译的预处理阶段起作用,类似于代码插入 const是在编译、运行的时候起作用 安全性: define只做替换,不做类型检查和计算,也不求解,容易产生错误 const常量有数据类型,编译器可以对其进行类型安全检查 内存占用 define只是将宏名称进行替换,在内存中会产生多分 阅读全文
摘要:
C++中struct和class的区别 相同点: 两者都拥有成员函数、公有和私有部分 任何可以使用class完成的工作,同样可以使用struct完成 不同点: struct默认是公有的,class则默认是私有的 class默认是private继承, 而struct默认是public继承 C++和C的 阅读全文
摘要:
C++和Python的区别 python是一种脚本语言,是解释执行的,而C++是编译语言,是需要编译后在特定平台运行的。 python可以很方便的跨平台,但是效率没有C++高。 Python使用缩进来区分不同的代码块,C++使用花括号来区分 C++中需要事先定义变量的类型,而Python不需要 Py 阅读全文
摘要:
指针常量:本质是指针,但是指向常量,也就是可以改变指向,但是不可以改变指向的值 -常量指针:本质是指针,但是是常量的指针,不可以改变指向,但是可以改变指向的值 a和&a有什么区别? int a[10]; int (*p)[10] = &a a是数组名,是数组首元素地址,+1表示地址值加上一个int类 阅读全文
摘要:
''' int main(int argc, char const *argv[]){ const char* str = "name"; sizeof(str); // 取的是指针str的长度,是8 strlen(str); // 取的是这个字符串的长度,不包含结尾的 \0。大小是4 return 阅读全文
摘要:
变量声明和定义区别? 声明仅仅是把变量的声明的位置及类型提供给编译器,并不分配内存空间;定义要在定义的地方为其分配存储空间。 相同变量可以在多处声明(外部变量extern),但只能在一处定义 搞懂全局变量、外部变量、静态全局变量的区别 全局变量 是在函数的外部定义的,它的作用域为从变量定义处开始,到 阅读全文
摘要:
#define 标识符 替换列表 宏定义和函数有何区别? 宏在预处理阶段完成替换,之后被替换的文本参与编译,相当于直接插入了代码,运行时不存在函数调用,执行起来更快; 宏定义属于在结构中插入代码,没有返回值;函数调用具有返回值。 宏定义参数没有类型,不进行类型检查;函数参数具有类型,需要检查类型。 阅读全文