1. C++ 整数类型范围

可以参照头文件limits.h定义的宏

#define INT_MAX       2147483647(32bit, 最大10位十进制)

#define UINT_MAX      4294967295U(32bit, 最大10位十进制)

#define LLONG_MAX    9223372036854775807LL(64bit, 最大19位十进制)

#define ULONG_MAX    18446744073709551615UL(64bit, 最大20位十进制)

2. 防止头文件被包含多次

头文件中往往这样写

#ifndef  HEADERFILENAME_H

#define HEADERFILENAME_H

....your code

#endif

3.变量是这样声明的

extern int e; 我们一般不会extern int e=1; 因为这样就算是直接定义了e,没必要了;同一个作用域可以声明多次,但只能定义一次。

4.string 的一般用法

string s1,s2("string"),s3(s2),s4(5,'c'),s5(s2.being(),s2.end());

char* cp = “string”;

char c_array[] = “string”;

char sb [] = {‘s’,’b’};//无结尾字符数组

string s6(cp), s7(c_array), s8(c_array,c_array+1);

string s9(sb);//runtime error

if(s1.empty()){

string::size_type size = s1.size();

cout<<size<<endl;

}

cout<<s1<<","<<s2<<","<<s3<<","<<s4<<endl;

ifstream fin("a");

while(getline(fin,s1)){

cout<<s1<<endl;

}

fin.close();

s1 = s2;// first free s1's memory, second new a memory for s1, third copy data from s2 to s1.

s1 += s2;

s1 += "...";

//一些方法

<cctype>包含了很多字符操作方法

c_str(); 返回const char*

Insert,assign//替换,erase,substr(pos,n),find,append,replace

Rfing//最后一次出现的位置,find_first_of(args)//args中任意字符第一次出现的位置,find_last_of(args)//args中任意字符最后一次出现的位置,find_first_not_of(args)//对象中第一个不属于args的字符,find_last_not_of(args)//对象中最后一个不属于args的字符。

Compare

5. 指向常量的指针和常指针

const int * p = π//常量的指针,不能通过p改变pi的值。Pi可以是常量或者是变量。

Int * const p = π//常指针

6. 数组初始化

Char a[5] = {0}; 一个定长空串,全是\0

Int a[3] = {1}; 其余会初始化为0;

Int a[2][3]={{1,2,3},{2},{1,2}};//按行初始化,每行其余是0

Int a[2][3]={1,2,3,4,5};//全部按地址顺序初始化,其余是0

7. 函数指针

bool (*pf)(const string &); //定义一个参数为一个常字符串引用返回类型为bool类型的函数指针。

typedef bool (*pf)(const string &); //pf 可以定义函数指针

如果定义了bool myfun(const string &);

那么我们可以这样获取函数地址:

pf test = myfun;或者pf test = &myfun;

8. 返回引用

返回引用可以避免一些对象的拷贝,节约内存以及开辟内存的时间。当然返回引用也有其特别的地方,就是有时候可以做左值:

char &get_val(string &s, string::size_type x){

return s[x];

}

那么你可以这样调用他:

string s=”1234”;

get_val(s,0) = ‘a’;//s的值为”a234”

如果不想让其成为左值,那么参数要声明为“const string & s”

注意:不要返回临时对象的引用和指针!

9. 静态变量是被自动初始化的

10. for循环定义的迭代变量是局部的

for(int i=0;i<2;i++){

for(int i=0;i<2;i++){

cout<<i;

}

}

0101

11. palcement new 的使用

palcement new之所以有好处是因为他可以把对象放在一片指定的内存之中,如果这个对象创建删除比较频繁他会比普通的new有很大优势。普通的new需要重新寻找一片足够大的连续内存才行。

  1. #include <iostream>
  2. #include <new>
  3. using namespace std;
  4. const int chunk = 16;
  5. class Foo
  6. {
  7. public:
  8. int val( ) { return _val; }
  9. Foo( ) { _val = 0; }
  10. private:
  11. int _val;
  12. };
  13. //预分配内存,但没有Foo对象
  14. char*buf = new char[ sizeof(Foo) * chunk ];
  15. int main()
  16. {
  17. //在buf中创建一个Foo对象
  18. Foo*pb = new (buf) Foo;
  19. //检查一个对象是否被放在buf中
  20. if ( pb->val() == 0 )
  21. {
  22. cout <<"new expression worked!" <<endl;
  23. }
  24. //到这里不能再使用pb
  25. delete[] buf;
  26. return 0;
  27. }

12 c++方法隐藏

隐藏就是说方法看不到了,这种情况出现在子类实现了与父类同名的函数(参数不同也可以)。看下面的例子:

class Sup{
public:
virtual int test() {cout << "super" << endl;}
};
class Sub: public Sup{
public:
int test(int i) {cout << "sub:int"<< endl;}
int test(double i) {cout << "sub:double" << endl;}
};
int main(){
Sub s;
s.test();
}

这样编译不会通过,原因如下:c++在设计时出于安全考虑,他认为实现子类的人有可能不知道父类的方法,因为在调用的时候会调用匹配度最高的方法,所以在调用d.test()时很可能是程序员写错了而无意间调用了父类方法,这样错误很难排查,所以干脆吧父类同名方法隐藏。所以在编译时会报错,d找不到相应的方法。

如果你非要用Base里面的方法,可以显示的在子类加上一句

class Sub:public Sup{
public:
int test(int i) {cout <<"sub:int" <<endl;}
int test(double i) {cout <<"sub:double" <<endl;}
using Sup::test;
};

(持续更新中....)

【语言基础】c++ 备忘录的更多相关文章

  1. 20165322 学习基础及C语言基础调查

    学习基础和C语言基础调查 一.技能学习经验 有什么技能比90%的人更好? 说来惭愧,我并不认为自己有什么技能能超过90%的人.我从小喜爱水彩画和推理解谜,在自己一些闲余时间的练习与学习下,应该可以超过 ...

  2. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...

  3. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

  4. C#语言基础

    第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...

  5. C语言基础回顾

    第一章 C语言基础 1.  C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...

  6. 黑马程序员_ C语言基础(二)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述):   1.Hello W ...

  7. C#语言基础— 输入与输出

    C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...

  8. 【GoLang】GO语言系列--002.GO语言基础

    002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...

  9. R语言基础:数组&列表&向量&矩阵&因子&数据框

    R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...

  10. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

随机推荐

  1. 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象

    本节说一下JSP中的9个内置对象.这9个内置对象都是Servlet API接口的实例,只是JSP规范对他们进行了默认初始化(由JSP页面对应Servlet的_jspService()方法来创建这些实例 ...

  2. Redis基本配置

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 bytes # 1kb ...

  3. DDNS

    一.DDNS简介 DNS,域名系统,是因特网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人们更方便的访问互联网. DDNS,动态域名系统,是域名系统(DNS)中的一种自动更新名 ...

  4. mysql密码相关

    Windows中修改密码在不同场景下,有以下几种方案: 方法1:用SET PASSWORD命令,具体更新密码步骤如下: c:>mysql -u root   mysql>set passw ...

  5. 【2016-10-12】【坚持学习】【Day3】【命令模式】

    今天学习了第二个模式,命令模式 例子: 开关==>发送者 电线==>命令传输 电灯==>接受者 一个开关可以通过不同电线控制不同电器, 结构: 发送者类, 抽象命令类 具体命令类:继 ...

  6. 平面直接坐标系线段相交问题(小Q(钟神)的问题)

    [问题描述] 小 Q 对计算几何有着浓厚的兴趣.他经常对着平面直角坐标系发呆,思考一些有趣的问题.今天,他想到了一个十分有意思的题目:首先,小 Q 会在?轴正半轴和?轴正半轴分别挑选?个点.随后,他将 ...

  7. 嵌入式Linux驱动学习之路(四)u-boot编译分析

    u-boot编译分析 在配置完成后,执行make开始编译.这里打开Makefile. 首先在目标all前有一句话首先检查是否有include/config.mk文件来判断是否成功配置过. ifeq ( ...

  8. codevs[1300]文件排版

    Description 写电子邮件是有趣的,但不幸的是经常写不好看,主要是因为所有的行不一样长,你的上司想要发排版精美的电子邮件,你的任务是为他编写一个电子邮件排版程序. 完成这个任务最简单的办法是在 ...

  9. poj1416 Shredding Company

    Shredding Company Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5379   Accepted: 3023 ...

  10. Java读写文本文件

    1 字符输入(FileReader , char) import java.io.IOException; import java.io.FileReader; public class ep10_1 ...