您的位置:首页 > 编程语言 > C语言/C++

[C++]一些很基本的知识

2013-11-12 10:54 197 查看
The basic of basic
cin,cout,cerr,clog
作用域运算符 ::
while(cin >> data)
返回的是istream,但存在istream到bool的类型转换,读入失败或结束时相当于false
引用运算符 &
文件重定向
helloworld <infile>outfile
静态/动态数据类型语言
动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远不给任何变量指定数据类型,该语言会在第一次赋值给变量时,在内部将数据类型记录下来,比如PythonRuby就是一种典型的动态类型语言。
静态类型语言与动态类型语言相反,它的数据类型是在编译期间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表。

无符号数衡正

指定字面值的类型

增加前后缀 wchar_t ch= L'c';

变量初始化

函数体外,初始化为0;函数内置型变量不被初始化。

声明

extern int num; //可能在别处定义

变量和基本类型
复合类型 声明语句 = 基本数据类型 + 声明符 如“int *p”,“*”为声明符引用:别名,必初始化,与对象绑定,可直接修改,操作同步。
指针:void指针,转换类型后才能操作
int *p;
int *&r = p;
理解r的类型,从右向左阅读r的定义,离r最近的&有直接影响,故r为引用,是一个指针的引用

int i = 42;
int *p;
int *&r = p;
r = &i;           //另p指向i
*r = 0;           //将i的值改为0


const

必须初始化,不能修改
使用extern共享访问

extern int bufSize = init();

extern int bufSize;

不能作为一般常量的引用

int &r = bufSize;

常量引用范围很广,可以有类型转换

int i = 42;
const int &r1 = i;
const int &r2 = 43;
const int &r3 = r1 * 2;
int &r4 = r1 * 2;         //错误!


常量对应常量指针,看这个例子

int num = 10;
const int connum = 100;
int *const r1 = #        //r1一直指向num
const int *r2 = &connum;     //指向常量对象的指针
称r1为顶层常量,表示指针本身是个常量,r2为底层常量,表示指向的对象是个常量。

constexpr

将变量或指针定义为顶层常量,可以使用constexpr函数来初始化constexpr函数,

constexpr int size();
constexpr in sz = size();

constexpr引用也能绑定到局部静态变量上。

constexpr定义的指针,只对指针有效,对指针指向的变量无效。

vs不支持这一关键字

类型别名
typedef double newdouble, *douptr; //doubptr等价于double *

using newdouble = double; //vs2010不支持??

注意:

typedef char *pchar;
const pchar pstr = 0; //一个指向char的常量指针

const char *pstr = 0; //一个指向const char的指针

auto
自动识别变量类型

auto i = 0; //type(auto) == int

忽略顶层常量,额外添加const
const int num = 10;
const auto i = num;

auto j = num, *n = # //错误,前后不一致

decltype
decltpye(X) sum = Y; sum的类型与X相同,X甚至可以为函数,此时sum类型即为X的返回值类型。

X若为解引用操作,如
int i = 10, *p = &i;
decltype(*p) c;

此时c的类型为int&。
另外,对于decltype((X)) c,无论X为什么,c的类型都是引用,必须初始化。

预处理器
头文件包含的唯一性

#ifndef MY_HEADER_H
#define MY_HEADER_H
#include<iostream>
int main()
/*
*   ......
*/
#endif


本文出自 “佐佑的记事本” 博客,请务必保留此出处http://jarvis365.blog.51cto.com/8179284/1323654
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: