C++PrimerPlus学习

内联函数:inline
ep:inline double test(double d){ return d*d;}

引用变量声明:
double side = 0.034;
double &side2 = side;
引用变量在声明的时候要进行初始化。

定义函数的默认参数:
double test(int c, double d = 0.02, char ch = 'a');
定义默认参数时从右往左,没有定义默认值的参数放在左边。

const的其中一个限定作用
char * left(const  char* str,int n = 1);
上面函数原型表明返回值类型为char*类型,并保证了输入的str不能再函数内被更改,设置第二个整型参数的默认值为1。

函数重载必须保证函数特征标的不同,函数特征标包括:
1.参数的个数
2.参数的排列顺序
3.参数的类型(规定引用类型&cc和参数本身cc属于同一种类型参数)
只有上述全部一致时才是相同的函数特征标
ep:void print(int i, double b);
   void print(int i, char ch);

常写在头文件中的东西:
1.函数原型
2.使用#define 或 const定义的符号变量
3.结构声明
4.类声明
5.模板声明
6.内联函数

用#include 声明头文件的时候,用尖括号和双引号表示头文件是不同的
用尖括号表示只在存储标准头文件(软件中的头文件)中查找,用双引号表示头文件时
将优先在工程文件夹中查找,没有的话再到系统文件中查找。
#include <string>    #include "test.h"

再IDE中不要将头文件加入到项目列表中,更不要在源码中使用#include 来包含其他源代码文件

头文件管理:
在同一个文件中只能将一个头文件包含一次。通常头文件加入如下格式避免这个问题
#ifndef TEST_H__        (这里用下划线是为了防止命名与系统头文件中的命名发生冲突)
#define TEST_H__
(code)
#endif
代码:表示如果没有使用预处理器编译指令(if not define)TEST_H__那么定义(define)TEST_H__之后执行中间的代码

extern "C" __fastcall .....
常在头文件中看到的函数原型(其中extern "C")表示使用C语言链接性。

指针自动加一的特性使得数组变量和字符串变量可以这样定义
float * ff = new float[20];
const char* str = "test";

类的常用写法:
将类定义到头文件中,定义类的成员变量(隐藏数据private 修饰词)以及成员方法的原型和构造函数(在写类的时候通常写一个无参数的默认构造方法,并赋初始值
,然后在定义一个含有参数的构造方法)/析构函数(~Class_Name()),然后将成员函数的实现写在同名cpp文件中。

OOP特点:
数据项私有,成员函数公有。外部不能够直接访问类中的私有数据项,只能通过类中的公有成员函数进行访问。这些公有函数就是接口。

类声明:
class Test
{
    private:
        data member declarations
    public:
        member function prototypes
};(这个分号区别于其他语言如java)

构造函数声明:
Stock::Stock(const string &company, long shares)
{
    code;
}
class Stock
{
    private :
      string  company_;
      long       shares_;    (数据成员命名的时候不能与构造函数的参数一样!!!!!!!!!!!)
    public :
        code
};

隐式访问和显式访问:
stock.func(stock1);
stock:该对象式隐式访问
stock1:该对象式显式访问
this指针指向调用函数即stock,*this表示stock的内容,this只是一个指针(地址)

typedef关键字:
typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。
ep: typedef char* anyword;    表示将anyword作为char*类型的同义字,跟引用变量类比
    anyword cc;            表示定义一个char* 类型的变量cc

posted @ 2017-08-21 23:10  LonlyBlood  阅读(315)  评论(0)    收藏  举报