C++ Primer 学习笔记

来源:互联网 发布:linux 小数取整 编辑:程序博客网 时间:2024/05/20 20:47

C++基础

变量类型

(1) char 类型是否是有符号由编译器决定。有符号范围为:-128~127
(2) 经验准则
a、明确不能为负时,用无符号;
b、用int执行整数运算;
c、算术表达式不要有char、bool,如果要用要明确signed char 或 unsigned char;
d、浮点运算用 double。
(3) 类型转换
a、当赋值给有符类型超出范围是,是未定义的行为。

声明与定义

定义分配了空间,且可能赋值

 extern int a=1; // 是定义

const

变量初始化时,不区分const、非const,都可以赋值

2.

const int *p; //允许改变p,不允许改变p所指变量int *const p; //不允许改变p,允许改变p所指变量

如果想在多个文件中共享const变量,定义前要加extern,然后在其他调用的文件中声明

int i=5; const int &r = i;  //正确:不允许通过r来改变i 的值int i=5; const int *r = &i;  //正确:不允许通过r来改变i 的值

定义类的 const 数组

//在.h文件中声明定义static const int kParamMaxLen[MAX_PARAM_TYPE];//在.cpp文件中初始化const int CCalc::kParamMaxLen[MAX_PARAM_TYPE] = {23};

函数名加const,void function() const{}

class aa{    int num;public:    aa(){        int b =10;        num = b;    };    void out1(){        cout<<num<<endl;    }    void out2() const{        cout<<num<<endl;    }    void out3() const{        num+=10; //出错,const函数不能修改其数据成员        cout<<num<<endl;    }};int _tmain(int argc, _TCHAR* argv[]){    aa a1;    a1.out1();    a1.out2();    a1.out3();    const aa a2;    a2.out1(); // 错误,const的成员 不能访问非const的函数    a2.out2();    a2.out3();    return 0;}

typedef

typedef char* pstring;     const pstring str; //表示指向char 的 常量指针    const char* str;    //表示指向常量char 的指针

字符串、向量、数组

(1) 头文件不应包含using声明
因为头文件会被拷贝到引用它的文件中去,这样可能会引起名字冲突。

string s5 = "hiya"; //拷贝初始化string s6 ("hiya"); //直接初始化

(3)string的操作

os<<s   //将s写到输出流os当中,返回osis>>s   //从is中读取字符串赋给s,字符串以空白分隔,返回isgetline(is, s)   //从is中读取一行赋给s,返回is

(4)有size()函数就不要定义int类型。

(5)改变字符特性—-cctype头文件

迭代器

(1) 使用迭代器的循环体,不要向迭代器所属容器添加元素。

表达式

(1) 取余

m%(-n) = m%n ; (-m)%n=-(m%n)

(2)前置运算符
优先使用前置运算符。提高性能。

函数

(1) 预编译器定义了4个用于程序调试的变量

__func__ 是编译器定义的一个局部静态变量,用于存放函数的名字__FILE__/__LINE__/__TIME__/__DATE__

(2) 函数匹配

    void ff(int)    void ff(short)    ff('a')  //char会提升为int,调用ff(int)    void f1(long)    void f1(float)    f1(3.14) //错误:二义性调用.3.14类型是double,既能转成long也能转成float
原创粉丝点击