- 浏览: 53818 次
- 性别:
- 来自: 深圳
-
最新评论
文章列表
1.无论创建多少对象,程序都只创建一个静态类的副本,类的所有对象共享同一个静态成员
2.不能在类声明中初始化静态成员变量,除非使用const,在类声明外初始化时,使用类作用域运算符,不要使用关键字static
3.删除对象可以释放对象本身占用的内存,但不能自动释放属于对象成员的指针指向的内存
4.自动存储对象被删除的顺序与创建的顺序相反
5.使用一个对象来初始化另一个对象时,编译器自动生成构造函数(也称复制构造函数),如果用户没有手动指定的话,形如class_name(const class_name &),当函数按值来传递对象或者函数返回对象时,都将使用复制构造函数
6.默认的复制构造 ...
1.重载运算符,需要使用运算符函数
operatorop(arg-list)
op必须是有效的c++运算符
2. class_t a, b, c;
c = a + b; //等价于c = a.operator+(b) a是调用的对象,b是作为参数传递的对象
3.重载限制
1)重载后的运算符必须至少有一个操作数是用户定义的类型
2)使用运算符不能违反原来的句法规则
3)不能创建新运算符
4)有一些运算符不能重载
4.友元函数与类的成员函数具有相同的访问权限,对于非成员重载运算符函数,运算符左边的操作数对应于运算符函数的第一个参数,运算符右边的操作数对应于运算符函数的第二个参数
5.友元函数在类中 ...
1.OOP特性:
抽象
封装和数据隐藏
多态
继承
代码的可重用性
2.OOP从用户的角度考虑对象--描述对象所需的数据和描述用户与数据交互所需的操作
3.类是一种将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组 ...
1.持续性
自动存储:函数定义中声明的变量,包括函数参数
静态存储:函数定义外声明的变量和使用static定义的变量
线性存储:使用thread_local声明,生命周期与所属线程一样长
动态存储:new delete
2.类中声明的成员,作用域为整 ...
1.编译器将内联函数代码替换函数调用,函数声明和定义之前加关键字inline,内联函数不能递归
2.引用是已定义变量的别名,引用变量主要是用作函数的参数,函数将使用参数原始版本而不是副本,必须在声明引用变量时将其初始化,一旦初始化完成,将不能再成为其他变量的引用
3.想使用引用,又不想修改变量的值,可以使用const int &a
4.如果函数实参与引用参数不匹配,仅当参数为const引用时,C++将生成临时变量,使该引用指向临时变量,生成临时变量的情况
1)实参类型正确,但不是左值
2)实参类型不正确,但可以转换为正确的类型
5.将引用用于结构,可以节省内存和时间
6.基类引用可以指向 ...
1.C++的for循环允许这样定义初始值
for(int i;;); //变量i只存在于for语句中
2.对于类而言,前缀++i比后缀i++效率高
3.逗号表达式
先计算第一个表达式再计算第二个表达式,以此类推,逗号表达式的值是最后一部分的值,逗号运算符在所有运算符中的优先级最低
4.C++基于范围的for循环
int a[3] = {1,2,3};
for(int x:a); //x依次表示a[0] a[1] a[2]
5.函数原型不要求提供变量名
6.如果数据类型本身并不是指针,则可以将const或非const的数据地址赋给指向const的指针,但只能将非const数据的地址赋给非const ...
1.sizeof用于数组名,得到的是整个数组中的字节数,如果用于数组元素,得到的是数组元素的长度,如果用于指针,得到的是指针的长度
2.如果只对数组的一部分初始化,则编译器将把其他元素设置为0
3.C++11支持的数组初始化
1)int a[4] {1,2,3,4};
2)char a[4] {}; //all set to 0
4.C++11支持的字符串初始化
char a[] {"Hello world"};
string a {"Hello world"};
5.C++11支持的结构初始化
struct a {
int x;
cha ...
1.可对类型名或者变量名使用sizeof,但类型名应该放在括号中
2.C++支持的变量初始化方法
1)int a(11);
2)int a = {11};
3)int a{11}; //大括号内不包含任何值,变量将被初始化为0
3.尽量使用const来创建常量
4.使用相同的符号进行多种操作叫做运算符重载
1.C++中,函数定义的参数为空与参数使用void等效,C中参数为空意味着对是否接受参数保持沉默
2.cin和cout是istream类和ostream类的实例,这两个类是在头文件iostream定义的
3.新式纯粹的C++头文件没有扩展名,转换后的C头文件名加前缀c
4.名称空间,使各个厂商的代码组合起来不发生冲突,using namespace xxx
5.类定义描述的是数据格式和用法,对象是根据数据格式规范创建的实体
6.程序能够访问名称空间std的方法
1)using namespace std放在所有函数之前,让文件中的函数都能够使用名称空间std中的所有元素
2)using name ...
1.C++是在C语言面向过程(Procedure Oriented)的基础上添加了面向对象编程(Object Oriented)和面向泛型编程(Generic Oriented)
2.过程性编程强调算法,采用自顶向下的设计方法,对象性编程强调数据,采用自下向上的设计方法,对象性编程将数据和方法合并为类定义,泛型编程独立于特定的数据类型,可以只编程一个泛型函数,并将其用于实际类型
3.C++标准包括C++98,C++03和C++11,最新的C++14即将发布?
1. 当满足条件的case中没有break,程序将依次执行其后的每种条件(包括default)直到遇到break跳出
int main()
{
int n = 1;
switch(n) {
case 1:
printf("--1--\n");
default:
printf("default\n");
case 2:
printf("--2--\n");
break;
case 3:
p ...
先安装依赖readline
sudo apt-get install libreadline-dev
解压lua-5.3.1.tar.gz,进入lua-5.3.1/
1. make linux
2. sudo make install
生成的bin文件存放在/usr/local/bin/lua /usr/local/bin/luac
生成的lib文件存放在/usr/local/lib/liblua.a
svn up
A:新增 D:删除 U:更新 C:冲突 G:合并
svn st
A:新增 D:删除 M:修改 C:冲突 R:替换
tar --exclude-vcs -cf archive.tar foo
可以使打包生成的文件不包含版本控制信息
在使用SVN命令行提交代码(svn ci -m"comment"),提交的注释都处在一行中,如果我们想要使注释分为几行,可以使用如下命令:
svn ci -m $'comment1\ncomment2\ncomment3'