C++Primer笔记(1,2)

关于头文件的引入:

包含来自标准库的头文件时,应该用尖括号<>包围头文件名。对于不属于标准库的头文件,则用双引号""包围

#include <iostream>

#include "test.h"


关于使用文件重定向:

测试程序时避免反复从键盘敲入数据

$ program_name <infile> outfile


关于(.)运算符:

点运算符只能用于类类型的对象。其左侧运算对象必须是一个类类型的对象,右侧运算对象必须是该类型的一个成员名,运算结果为右侧运算对象指定的成员。


关于调用运算符():

当用点运算符访问一个成员函数时,通常我们想调用该函数,我们使用一个调用运算符()来调用一个函数

类类型(CLASS TYPE):类定义的类型。类名即为类型名。


变量命名规范:

变量名一般用小写字母,如index。

用户自定义的类名一般以大写字母开头,如Sales_item。


指针值:

指针的值(即地址)应属于以下四种状态之一:

1.指向一个对象

2.指向紧邻对象所占空间的下一个位置

3.空指针,意味着指针没有指向任何对象

4.无效指针,也就是上述情况之外的其他值


空指针:

空指针不指向任何对象,在试图使用一个指针之前代码可以首先检查他是否为空。以下列出几个生成空指针的方法:

int *p1=nullptr;          //等价于int *p1=0;

int *p2=0;                //直接将p2初始化为字面常量0

//需要首先#include cstdlib

int *p3=NULL;            //等价于int *p3=0;

得到空指针最直接的办法就是用字面值nullptr来初始化指针


指向指针的指针:

int ival=1024;

int *pi=&ival;    //pi指向一个int 型的数

int **ppi=&pi;    //ppi指向int 型指针的指针


指向指针的引用:

引用本身不是一个对象,因此不能定义指向引用的指针。但指针是对象,所以存在对指针的引用:

int i=42;

int *p;

int *&r=p;    //相当于给p起了一个别名,r是一个对指针p的引用

r=&i   ;        //r引用了一个指针,因此给r赋值&i就是令p指向i

*r=0;            //解引用r得到i,也就是p指向的对象,将i的值改为0

要理解r的类型到底是什么,最简单的办法是从右向左阅读r的定义。离变量名最近的符号(此例中是&)对变量的类型有最直接的影响,因此r是一个引用。声名符的其余部分用以确定r引用的类型是什么,此例中的符号*说明r引用的是一个指针。最后,声明的基本数据类型部分指出r引用的是一个int指针。


const double pi=3.14;

const double *const pip=&pi;    //pip是一个指向常量对象的常量指针。也就是说pip必须指向pi并且pip指向pi的值不能改变


类型别名:

typedef double wages,*p;    //wages是double的同义词,p是double *的同义词

在C++11中规定了一种新的方法,使用别名声明即:using SI=Sales_item


decltype类型指示符

const int ci=0,&cj=ci;

decltype(ci) x=0;    //x的类型是const int

decltype(cj) y=x;    //y的类型是const int &,y绑定到变量x

decltype(cj) z;        //错误:z是一个引用必须初始化    

如果给变量加上了一层或多层括号,编译器会把它当成一个表达式。

//decltype的表达式如果是加上了括号的变量,结果将是引用

decltype((i)) d;    //错误:d是int&,必须初始化

decltype(i) e;    //正确:e是一个int


关于预处理功能的头文件保护符

1.在自己要定义的头文件(定义类之类的文件)用一下语句:

sales_data.h

#ifndef SALES_DATA_H

#define SALES_DATA_H    //这条是关键,因为有这个宏定义就能做出判断

#include <string>

using namespace std;

struct Sales_data{

    string bookNo;

    int abc=0;

};

#endif

2.也可以在每一次需要#include "sales_data.h"的时候进行判断,如果需要在很多文件中都引用a.h的话。这种方法增加了一点代码量

#ifndef A_H
#define A_H
#include "a.h"
#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值