c++学习笔记(一)

c++到目前为止还没有接触过,,学习过c、java、c#,而真正熟练的只有java。依据学习java的经验,我将快速学习c++的语法,鉴于在学习java的时候意识到基础的重要性,会仔细学习c++基础,并记录下来以后会看的知识点,并结合我对java的认识做比较。

安装了MinGW,编译器选择JetBrains 的Clion,c++编译版本是默认c11。

参考书籍:c++primer中文版 第四版(如果以下出现错误,请指正)


std::cin>> //输入语句
std::cout<< //输出语句
end1 //文件结束符,输出换行并且刷新cout缓冲区

基本类型:

基本内置类型(也叫算数类型arithmetic type),分为整型(整数、字符、布尔值的算数类型)和浮点型。
wchar_t 宽字符型 、long double 扩展精度浮点型
浮点型储存单位为有效数字,意思是:整数位数和小数位数的个数和,整数位数多了,小数位数就小了,反之亦然。

signed和unsigned(大于等于0的数),而bool没有符号类型。unsigned int可以简写为unsigned。

字面值常量:

字符串字面值由编译器在末尾添加一个空字符。

左值、右值:

没有实际含义,仅仅是一种叫法。能出现在赋值符号“=”两边的叫“左值”,只能出现在右边的叫“右值”。算数类型(整数23,只能出现等号右边)为右值。

初始化和赋值:

首先明确初始化和赋值,两个概念
初始化:创建变量并给它赋初始值。分为直接初始化(int val(1024))、复制初始化(int val=1024)
赋值:擦除对象的当前值并用新值代替。

extern(声明):

声明和定义,两个概念
extern不为对象分配空间(类似java对象的引用,c++还有个引用概念,不要和java的引用弄混),只有当定义之后,才为对象分配空间。

如果这四个概念搞晕的可以参考以下博客:http://blog.csdn.net/elixiao/article/details/7303185#comments

const(常量):

使用const关键字的变量,必须进行初始化,一般把不会改变的值都定义为const(和java的final意思一样)。
不是const变量的类型默认是extern类型。
本文件中定义的const变量只能被本文件访问,想被其他文件访问需要显式的加extern。

&(引用):

int val0=23;
int &val1=23; //错误
int &val1=val0;//正确
引用变量的右边只能是变量(只能是变量,只能是变量,懂了吧),当val1=32,此时val0也变成32,val1相当与对val0起了一个新名字(和java浅克隆的效果很像)。

const用于引用的情况:

const int val0=23;
const int &val1=val0; 

这里的引用变量和被引用变量都必须是const才可以通过编译。如果&val1不加const,那么编译器就会直接报错误。

int val1=1;
const int val2=2;
std::cout << "val1:"<<val1 << std::endl;
std::cout << "val2:"<<val2 << std::endl;
int &val3=val1;
std::cout << std::endl<< "val1:"<<val1 << std::endl;
std::cout << "val2:"<<val2 << std::endl;
std::cout << "&val3:"<<val3 << std::endl;
val3=val2;
std::cout << std::endl<< "val1:"<<val1 << std::endl;
std::cout << "val2:"<<val2 << std::endl;
std::cout << "&val3:"<<val3 << std::endl;
val3=5;
std::cout << std::endl<< "val1:"<<val1 << std::endl;
std::cout << "val2:"<<val2 << std::endl;
std::cout << "&val3:"<<val3 << std::endl;
输出:
val1:1
val2:2

val1:1
val2:2
&val3:1

val1:2
val2:2
&val3:2

val1:5
val2:2
&val3:5

这段代码中&val3先读取了val2的值,后读取了val3的值。

typedef(名字):

typedef double wages;
typedef wages salary;
typedef允许为一种数据类型起其它名字(个人感觉上,这种语法容易让程序难读懂)。

enum(枚举):

初始化枚举成员的值需要是常量表达式,未赋值时枚举成员默认值从0开始。当前一个枚举成员显示初始化,紧跟它的枚举成员初始化值+1。

    enum Operate {
        insert_item = 2,
        update_item ,//默认值是3
        delete_item =3,
        select_item//默认值是4
    };
    Operate add=insert_item;
    // Operate change=4; 报错

class(类)和struct(结构体):

class默认成员都是private属性,struct默认成员都是public属性。

命名空间的using声明:

简化代码

using std::cin;
cin>>s;

猜你喜欢

转载自blog.csdn.net/irony0egoist/article/details/57074453