C++ 快速入门指南

C艹.jpg

内联函数

C++提供了程序内联机制来减少函数调用的开销。在函数定义的返回值类型前面加一个inline关键字,“建议”编译器函数代码复制到程序中,避免函数调用。

using std::cout;
using std::cin;
using std::endl;


inline double cube(const double side){
   return side*side*side;
}

void testInlineFunction(){
   double sideValue;
   for (int i=1 ; i<=3 ; i++) {
       cout << "enter the side length of your cube:";
       cin >>sideValue;
       
       cout << "side=" << sideValue << "cube=" << cube(sideValue) <<endl;
   }
}

  • using std::cout;using语句使我们不用重复写std::前缀;或者使用using namespace std;代替。

引用以及引用形参

  • 两种传参方式是:按值传递和按引用传递。
  • 采用按值传递方式传参时,首先生成实参值的副本,然后将该值传递给被调函数。改变副本的值不会影响主调函数中实参的值。
  • 通过按引用传参,允许被调函数直接访问主调函数中的数据,允许被调函数有选择的修改主调函数中的数据。
  • 引用实参是其对应的函数调用中实参的别名。
  • 通过&来标记按引用传参

引用以和引用形参

int squareByValue(int number){
    return number *=number;
}

void squareByReference(int &numberRef){
    numberRef *=numberRef;
}

函数体内引用作为别名

int z = 3;
   int &z_alias = z;//int &z_alias;
   cout << "z= " << z << endl << " z_alias = "  <<  z_alias << endl;
   z = 7;
   cout << "z= " << z << endl << " z_alias = "  <<  z_alias << endl;

输出

z= 3
 z_alias = 3
z= 7
 z_alias = 7

并且为初始化的引用int &z_alias;会导致错误

Declaration of reference variable 'z_alias' requires an initializer

空形参列表

在C++中,可以用void指定也可以通过在括号内不写任何语句定义空形参列表。如下两个函数是等价的:

void print();
void print(void);

默认实参

  • 有些程序在多次调用一个函数时经常将相同的实参传递给某个形参,这种情况下,可以将该形参指定默认实参,即传递给该形参的默认值。
  • 当发生函数调用时,如果省略了对应位置上的实参值,则编译器就会重写该函数调用并将默认值作为实参插入到函数调用中,在执行被调函数时,以该形参的默认值进行运算。
  • 默认实参必须是函数形参列表中最右边的实参。
  • 应该在函数名第一次出现时指定默认实参--通常在函数原型中指定。
int boxVolume(int length = 1, int width = 1, int height = 1);

void testDefaultArgument(){
    cout << "default = " <<boxVolume() << endl;
    
    cout << "length  = 2 : " <<boxVolume(2) << endl;
    
    cout << "length  = 2 , width =3 : " <<boxVolume(2,3) << endl;
    
    cout << "length  = 2 , width =3 , height = 4 : " <<boxVolume(2, 3, 4) << endl;
}


int boxVolume(int length, int width, int height){
    return length*width*height;
}

一元作用域运算符

C++提供了一元作用域运算符,可以在含有与全局变量名的局部变量的域中访问该全局变量。

int number = 7;
void testUnaryOperation(){
    double number = 10.7;
    
    cout << "location number = " << number <<endl;
    
    cout << "gloable number = " << ::number <<endl;
    
}

输出

location number = 10.7
gloable number = 7

函数重载

  • C++中允许定义同名的函数,只要这些函数具有不同的形参集合即可(至少在形参类型或形参个数或形参类型的顺序上有区别)。这个功能称为函数重载。
  • 调用重载函数时,C++编译器通过检查函数调用语句中的实参个数、类型及顺序选择适当的函数。
  • 重载函数由函数的签名进行区分。
  • 编译器根据函数形参的个数与类型将每个函数标识符编码,以保证类型安全链接,从而确保可以调用适当的重载函数,也确保实参与形参类型一致。
void functionOverloading(){
   cout << square(7) <<endl;
   cout << square(0.5) <<endl;
}

int square(int x){
   cout << "integer : ";
   return x*x;
}

double square(double x){
   cout << "double : ";
   return x*x;
}

输出

integer : 49
double : 0.25

函数模版

重载函数用于对不同数据类型的程序逻辑执行相似操作。如果各种数据类型的程序逻辑和操作是完全相同的,那么使用函数模版可以更加简洁、方便的执行重载。

  • 所有函数模版定义均以关键字template开始,随后是用尖括号<>括起来的模版形参列表.
  • 模版列表中的每个形参(称为形式类型形参)前面都加关键字typenameclass。两者含义相同。
  • 形式类型形参是基本数据类型或用户定义类型的占位符
template <class T>
T maximum(T value1, T value2, T value3 ) {
    T maximumValue = value1;
    
    if (value2 > maximumValue) {
        maximumValue = value2 ;
    }
    
    if (value3 > maximumValue) {
        maximumValue = value3 ;
    }
    
    return maximumValue;
}

关于C++部分的下一篇应该是C++ 类与对象,有空再补吧~~~

demo链接🔗https://github.com/samtake/C-review

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,516评论 1 51
  • 3. 类设计者工具 3.1 拷贝控制 五种函数拷贝构造函数拷贝赋值运算符移动构造函数移动赋值运算符析构函数拷贝和移...
    王侦阅读 1,800评论 0 1
  • #1.函数基础1.1 局部对象1.2 函数声明1.3 分离式编译 #2.参数传递2.1 传值参数2.2 传引用参数...
    MrDecoder阅读 595评论 0 1
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 4,997评论 0 14
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,556评论 0 5