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

浙公网安备 33010602011771号