博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
预览文章: c++ primer学习笔记,一:入门
阅读量:5170 次
发布时间:2019-06-13

本文共 3490 字,大约阅读时间需要 11 分钟。

为什么学习C++:

1、为了弄懂android底层,以及NDK开发

2、增长视野

 

开发环境搭建:

对比开发工具VS2005和eclipse+cdt+MinGW,发现最新版的eclipse太强了,都自动集成了,编译运行和VS2005一样方便。

写个helloworld测试发现,在eclipse上,C代码可运行,但C++说没有找到libgcc_s_dw2-1.dll,将MinGW的bin目录加入到环境变量中,问题解决!

 

学习概要:

第一章

初窥输入/输出

C++的输入输出  -------------   标准库<iostream> ---------- cincoutcerrclog

 

类简介

引入头文件  系统-----<>,  自定义----""

#include <standard_header>      

#include "my_file.h" 

第二章

基本内置类型

C++标准规定了每个算术类型的最小存储空间,但它并不阻止编译器使用更大的存储空间。

boolean char  wchar_t short int long float  double long double

 

1表示整数、字符和布尔值的算术类型合称为。

 

2wchar_t 类型用于扩展字符集,比如汉字和日语。

字面值常量

1在字符、字符串字面值前加 就能够得到 wchar_t 类型的宽字符字面值。如: L'a'、L"a wide string literal"

 

2为了兼容 语言,C++ 中所有的字符串字面值都由编译器自动在末尾添加一个空字符。

 

3两个相邻的仅由空格、制表符或换行符分开的字符串字面值(或宽字符串字面值),可连接成一个新字符串字面值。如

std::cout << "a multi-line "                   

"string literal " << std::endl;

 

4如果连接字符串字面值和宽字符串字面值,将会出现什么结果呢?其结果是!!!

 

5)句尾“\”,就是把下行挪上来。

变量

变量的两种初始化:复制初始化和直接初始化 

 int ival(1024);     // direct-initialization

  int ival = 1024;    // copy-initialization

声明与定义

extern int i;   // 声明可多次;声明仅说明变量在其他地方定义,不会分配存储空间;

 int i;          //  定义只能一次;

通常把一个对象定义在它首次使用的地方是一个很好的办法。

Const标识符

connst修饰符----- 不可修改,定义时必须初始化,比如:

const std::string hi = "hello!"; // ok: initialized       

const int i, j = 0;  // error: i is uninitialized const

 

非 const 变量默认为 extern。要使 const 变量能够在其他的文件中访问,必须地指定它为 extern比如:

extern const int bufSize = 1;   //可被其他文件访问,其他文件中:extern const  int bufSize;

const int bufSize = 1;     //不能被其他文件访问

引用

在变量名前添加“&”符号来定义

每一种引用类型都关联到某一其他类型。但不能定义引用类型的引用。

      int ival = 1024;

      int &refVal = ival; // ok: refVal refers to ival

      int &refVal2;       // error: a reference must be initialized

      int &refVal3 = 10;  // error: initializer must be an object

 

 

引用仅是对象的一个别名

 

 

const 引用,指向const对象的引用

const int ival = 1024;       

const int &refVal = ival;      // ok: both reference and object are const      

int &ref2 = ival;              // error: non const reference to a const object

 

typedef 名字

定义类型同义词

typedef double wages;       //  wages is a synonym for double      

typedef wages salary;       //  indirect synonym for double

 

 

typedef 通常被用于以下三种目的:

为了隐藏特定类型的实现,强调使用类型的目的。

简化复杂的类型定义,使其更易理解。

允许一种类型用于多个目的,同时使得每次使用该类型的目的明确。

 

枚举

枚举比常量的好处

说明了一组常量是相关的,并且可以给这组常量一些实用方法。定义一个:

// input is 0, output is 1, and append is 2      

enum open_modes {input, output, append};

 

 

枚举的赋值操作:

Points pt3d = point3d; //  ok: point3d is a Points enumerator      

Points pt2w = 3;       //  error: pt2w initialized with int      

pt2w = polygon;        //  error: polygon is not a Points enumerator      

pt2w = pt3d;           //  ok: both are objects of Points enum type

注意把 赋给 Points 对象是非法的,即使 与一个 Points 枚举成员相关联。

 

类类型

定义类时,通常先定义该类的接口,即该类所提供的操作。通过这些操作,可以决定该类完成其功能所需要的数据,以及是否需要定义一些函数来支持该类的实现。

 

定义类:

  class Sales_item {      

public:          // operations on Sales_item objects will go here      

private:          

std::string isbn;          

unsigned units_sold;          

double revenue;      

};

和java很不一样的是:class的花括号后还有“;”。

 

 

使用 struct 关键字

C++ 支持另一个关键字 ,它也可以定义类类型。struct 关键字是从 语言中继承过来的。

不同的是:第一个访问标号前的成员访问等级。class-----private ;   struct--------public

 

编写头文件

头文件用于声明而非定义

因为头文件包含在多个源文件中,所以不应该含有变量或函数的定义。但有三个例外:

头文件可以定义类、值在编译时就已知道的 const 对象和 inline 函数

 

如果 const 变量不是用常量表达式初始化,则该 const 变量应该在一个源文件中定义并初始化。应在头文件中为它添加 extern 声明,以使其能被多个文件共享。

 

预编译器

包含同一头文件不会引起该头文件定义的类和对象被多次定义,则通常为:。

 

避免多重包含

预处理器允许我们自定义变量。

预处理器变量 的名字在程序中必须是唯一的。任何与预处理器变量相匹配的名字的使用都关联到该预处理器变量。为了避免名字冲突,预处理器变量经常用全大写字母表示。

#define 指示接受一个名字并定义该名字为预处理器变量

#ifndef 指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后的所有指示都被处理,直到出现 #endif。如

#ifndef SALESITEM_H      

#define SALESITEM_H      // Definition of Sales_itemclass and related functions goes here     

#endif

头文件应该含有保护符,即使这些头文件不会被其他头文件包含。编写头文件保护符并不困难,而且如果头文件被包含多次,它可以避免难以理解的编译错误

转载于:https://www.cnblogs.com/kuangcheng/archive/2012/02/25/2368143.html

你可能感兴趣的文章
python集合的交,差,并,补集合运算汇总
查看>>
校园分期支付的机遇和风险
查看>>
怕忘记-windows 2003服务器安装Node.js NPM
查看>>
一鍵分享(優化后)
查看>>
dcm4che 的依赖无法下载
查看>>
cygwin主要命令
查看>>
多线程存在哪些风险
查看>>
洛谷P2692 覆盖 题解
查看>>
Linux下清理内存和Cache方法见下文:
查看>>
【AngularJs-模块篇-Form篇】
查看>>
支持向量基
查看>>
单链表 类
查看>>
类的组合 构造函数的用法
查看>>
ORACLE SQL:经典查询练手第三篇
查看>>
ubuntu 包管理
查看>>
java -io字符流FileWrite操作演示
查看>>
vue回到上一个位置
查看>>
UESTC_Infected Land 2015 UESTC Training for Search Algorithm & String<Problem G>
查看>>
.Net 之 RPC 框架之Hprose(远程调用对象)
查看>>
全球外贸客户资源网站总汇
查看>>