标签:c++
一个函数的定义包含四部分:返回类型,函数名,一个括号包围的形参列表(允许为空),以及函数体。
c++没有定义任何输入输出(IO)语句,取而代之,包含了一个全面的标准库(SL)来提供IO机制。使用iostream库,它包含两个类istream和ostream,分别表示输入流和输出流。记住流想要表达的是,随着时间的推移,字符是顺序生成或消耗的。标准库定义了4个对象,cin,cout,cerr,clog。
cout<<"Hello,world"<<"Welcome,come to C++ world"<<endl;cout对象输出"Hello,world"返回的是一个ostream对象,接着输出第二个字符串,还是返回一个ostream对象。endl的效果是结束当前行,并将于设备关联的缓冲区(Buffer)中的内容刷到输入流中,而不是停留在内存中等待写入流中。cin和cout差不多,就是后面不能加endl。cin输入使,要分开,空格和换行都可以。
标准库定义的所有名字都在命名空间std中。
for(init;condition;expression),首先执行inti,再condition,如果满足,就执行for的循环体,然后执行epression,最后重新执行condition,循环下去。不满足就直接跳出for循环。
利用cin读取不定数量的数据。
#include<iostream>
int main()
{
int sum = 0; value = 0; //c++内置类型要在使用前初始化,不然就是未定义的,不会默认 初始化,只有类类型例如string,vector会默认初始化。
while(std::cin>> value) //while循环就是检测cin输入流的状态
{
sum += value;
}
std::cout<<sum<<std::endl;
}
当遇到文件结束符,或遇到一个无效输入(此例如果不是整数),返回的istream的对象会无效,循环条件就会变false,跳出循环。在windows中输入文件结束符的方法是Ctrl+Z,然后单击enter键。
7.C++是一个静态数据类型语言,它的类型检查发生在编译时(不是运行时)。因此,编译器必须知道程序中每一个变量对应的数据类型。(记住是变量,不是形参,后面将会介绍模板)。
8.当我们赋值无符号类型一个超出范围的值时,结果是初始值对无符号类型总数取模后的余数。
当我们赋值有符号类型一个超出范围的值时,结果是未定义的。(不要发生这种情况)。
unsigned char c = -1; //c = 255
-1%256 = 255 ?(不用理会,每种语言的结果都不一样,可能规定不一样)
9.初始化不是赋值,初始化的含义是创建变量时赋值予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值代替。
10.当列表初始化用于内置类型的变量时,有个重要的特点:如果存在丢失信息的风险,编译器会报错。
double a = 3.1445;
int b{a} //错误,丢失精度
int c(a) //正确,丢失精度,但编译器不会报错
11.默认初始化问题。
当内置类型在函数外,默认为0,在函数内,不被初始化,访问将错误(编译器不会报错)。
类和其他的类型如vector和string,会被默认构造函数初始化。
12.C++语言支持分离式编译机制,该机制允许将程序分割多个文件,每个文件可被独立编译。声明和定义变量,声明是告诉程序它的名字和类型,而定义是申请存储空间,可能还会赋值。
extern int i; //声明
int j; //定义
extern int k = 3;//定义,抵消了extern的作用
定义只能一次,可以多次声明
13.引用不能解绑,引用不是对象,所以没有引用的引用。只有对象才可以引用,引用必须初始化。
14.const限定符
const限定的常量仅仅在执行改变常量的操作时才会发挥作用。
15.引用的本质。
非常量的引用按照一般的规则来,但是常量的引用却不一样。
const int &a = 1200; //会变成const int temp = 1200 const int &a = temp
const double b =1234.32432;
const int &c = b;
因为常量引用会在中间过程产生临时量,所以可以类型转换,可以直接引用字面值。引用常量还可以绑定非常量。
16.顶层const和底层const
顶层const表示指针本身是const,可以表示任何的类型
底层const表示指针所指的对象是const,只表示指针与引用有关
int i = 23;
int* const p1 = &i; //顶层const
const int ci = 43; //顶层const
const int *p2 = &ci; //底层const
const int *const p3 = p2; //左边的底层const,右边的顶层const
const int &r = ci; //底层const
底层const在拷贝的时候有限制。自己去实验。
本文出自 “郭俊的博客” 博客,转载请与作者联系!
标签:c++
原文地址:http://10093949.blog.51cto.com/10083949/1638017