Linux | c&cpp | Email | github | QQ群:425043908 关注本站

itarticle.cc

01面向对象设计

面向对象规范为对象编程定义了基本的规范,是面向对象编程的主要思想。换一种说法,面向对象规范就是基本的语法,定义了你写词造句的方式,将一个个单独的词语组合成一句完整的话语。 而面向对象设计教你如何正确地使用类,怎么把一些属性和方法封装在一个类中,怎样封装才是正确的,怎么使用继承关系。

02c++ 模板类 声明和定义都放在.h文件的原因

在分离式编译的环境下,编译器编译某一个.cpp文件时并不知道另一个.cpp文件的存在,也不会去查找(当遇到未决符号时它会寄希望于连接器)。这种模式在没有模板的情况下运行良好,但遇到模板时就傻眼了,因为模板仅在需要的时候才会实例化出来,所以,当编译器只看到模板的声明时,它不能实例化该模板,只能创建一个具有外部连接的符号并期待连接器能够将符号的地址决议出来。然而当实现该模板的.cpp文件中没有用到模板的实例时,编译器懒得去实例化,所以,整个工程的.obj中就找不到一行模板实例的二进制代码,于是连接器也黔驴技穷了

03Visual Studio 2012/2013 CPU高的解决办法

笔者一直都喜欢用VAX插件来做C++的开发,但发现VS2012安装了VAX后,CPU占用超级高,有时界面卡死得非常厉害。我卸了又装,升级最新版,都不管用。

直到有天,看到网友说:VS2012的sdf文件和pch文件夹很大,可以设置个临时目录进行存放,以便及时删除而节约硬盘空间。所以我也跟着做了如下设置:

在选项->文本编辑器->C/C++->高级里,把回退位置设为TRUE,并指定了回退位置的保存文件夹。

之后就没再出现高CPU的情况

04MySQL大小写敏感问题和命名规范

以下是MySQL详细的大小写区分规则:

在Linux下:

1、数据库名与表名是严格区分大小写的;

2、表的别名是严格区分大小写的;

3、列名与列的别名在所有的情况下均是忽略大小写的;

4、变量名也是严格区分大小写的;

在Windows下:

全部不区分大小写

05C++容器模板在共享内存中的使用

在共享内存中使用模板容器的关键问题是指针的问题,相对地址是解决这个问题比较好的方法。一个比较通用的方案是将所有的指针改成一个相对地址记录,还有一种思路对于容器的处理方式是将容器的所有数据按最大数量分配好,使用下标处理。

06STL迭代器及迭代器失效问题

1、对于关联式容器(map, list, set)元素的删除,插入操作会导致指向该元素的迭代器失效,其他元素迭代器不受影响。

2、对于顺序式容器(vector)元素的删除、插入操作会导致指向该元素以及后面的元素的迭代器失效。

07一看就懂的数据库范式介绍(1NF,2NF,3NF,BC NF,4NF,5NF)

第一范式(1NF):属性不可分

(1NF是对属性的原子性约束,要求属性具有原子性,不可再分解)

第二范式(2NF):符合1NF,并且非主属性完全依赖于码。

(2NF是对记录的惟一性约束,要求记录有惟一标识,更通俗说有主键ID,其它属性依赖于主键)

第三范式(3NF):符合2NF,并且,消除传递依赖。

(3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余)

08C++非类型模板参数

1.非类型的类模板参数。

2.非类型的函数模板参数。

3.非类型模板参数的限制。

09泛化之美--C++11可变模版参数的妙用

C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。

10C++模板类中的typename关键字

从属名称(dependent names): 模板(template)内出现的名称, 相依于某个模板(template)参数, 如T t;

嵌套从属名称(nested dependent names):从属名称在class内呈嵌套装, 如T::const_iterator ci;

非从属名称(non-dependent names): 不依赖任何template参数的名称, 如int value;

如果不特定指出typename, 嵌套从属名称, 有可能产生解析(parse)歧义(可能是类的静态成员).

任何时候在模板(template)中指涉一个嵌套从属类型名称, 需要在前一个位置, 添加关键字typename;

11Shell中的${}、##和%%使用范例

${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt

${file#*.}:删掉第一个 . 及其左边的字符串:file.txt

${file##*.}:删掉最后一个 . 及其左边的字符串:txt

${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3

${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)

${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file

${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

12C++ 模板小结

C++中突出的特性之一就是代码重用,而模板在其中发挥了重要的作用,STL也是依托于C++模板而实现的最为广泛和有用的工具库。模板所涉及到的知识比较杂,简单总结如下,以便日后温习。

我的名片

网名:丰果 | Ranger

职业:游戏开发

现居:上海市

Email:86668082@qq.com




站点信息

  • 建站时间:2016-04-01
  • 文章统计:728条
  • 文章评论:82条
  • QQ群二维码:扫描二维码,互相交流