C++ 比 C語言增加的新特性 2

1.C++新增了帶默認值參數的函數

1.1?格式

格式:返回值   函數名(參數1=初始值1,..........){} 
例如:void  function(int  a=10){}
調用:不需要更改參數的值:function();
這個調用并沒有傳參,如果要輸出a的值,則輸出默認值a=10更改參數的值:function(20);
這里改變了參數的值,如果要輸出a的值,則輸出a=20(即默認值被覆蓋)

1.2?注意

此調用報錯,因為調用function(20),這里的20?默認傳遞給第一個形參

void  function(int a=10,  int  c){}調用:function(20);//報錯//報錯信息test2.cpp:25:28: error: default argument missing for parameter 2 of ‘void function(int, int)’25 | void function(int a=10,int c)|                        ~~~~^test2.cpp:25:19: note: ...following parameter 1 which has a default argument25 | void function(int a=10,int c)

規定:函數中攜帶默認值的參數需要放在不攜帶默認值的參數后(針對于多個參數講)

void function(int  a ,  int  c=10){}調用:function(20);

1.3?舉例

main.cpp

1.3.1?例1

#include <iostream>
using namespace std;//函數的形參可以帶默認值
void function(int c = 10) {cout << "c=" << c << endl;
}int main()
{function();//a=10//function(20);//a=20return 0;
}

1.3.2?例2

#include <iostream>
using namespace std;//函數的形參可以帶默認值
//void function(int c = 10) {
//	cout << "c=" << c << endl;
//}//void function1(int c = 10,int b) {
//	cout << "c=" << c << endl;
//}void function2(int b,int c = 10) {cout << "b=" << b << endl;cout << "c=" << c << endl;
}int main()
{//function();//a=10//function(20);//a=20//function1(20);//報錯function2(20);//報錯return 0;
}

2.?內聯函數

2.1?概念:

內聯函數是指:程序在編譯過程中直接進行展開,就不需要在執行時對于函數的參數、局部變量、函數地址等入棧/出棧操作

用途:適用于短小且使用率非常高的代碼,內聯函數中一般不會放置循環結構

內聯函數的聲明:關鍵字:inline格式:inline   返回值    函數名  ([參數1,..........]){}調用:函數名([實參1,....])例如:inline  void function(){}調用:function()

1.2?舉例

main.cpp

//內聯函數的使用
inline int max(int a,int b) {return a > b?a: b;
}int main()
{int a = 10;int b = 20;int ret = max(a,b);cout << "ret=" << ret << endl;return 0;
}

1.3?面試題

對于一段精簡、使用頻度高的代碼,C語言如何實現才能提高效率,C++如何實現才能提高效率?

C++中將這段代碼聲明為內聯函數

C語言使用宏來實現

例如以下兩個舉例

#define??get_Max(a,b)??a>b?a:b

#define???sum(a,b) ???(a)*b

int??sum_result=sum(10+20?,?30)?;//900

3.?另外c++還增加了以下等等

(5)新增異常處理

C++可以主動產生異常,并捕獲異常進行處理

(6)新增面向對象機制

封裝、繼承、多態等等

(7)智能指針

用于幫助用戶管理堆內存空間

4.?C++的編譯流程和文件架構

4.1?C++的編譯流程

與C一樣,在Linux中編譯C++代碼,一般采用g++

請你闡述C/C++的編譯流程,以及每個流程中執行的工作任務

(1)預處理

a、將除源文件以外的內容全部加入到源文件中

b、進行宏替換工作

c、刪除掉注釋

(2)編譯

a、檢查用戶編寫的代碼是否符合C++語法規范

b、將用戶編寫的代碼翻譯成匯編語言

(3)匯編

a、將匯編語言翻譯成機器語言

(4)鏈接

a、生成可執行文件

4.2?C++的文件架構以及擴展名

(1)主程序文件

該文件中包含main函數,一般放置類的聲明與實例化,函數的聲明與定義等等

(2)源文件(一般是以.cpp為主)

源文件的后綴名一般是.cpp、.cxx、.cc等等,一般放置類的成員函數實例化、函數的定義等等

(3)頭文件(一般是以.h為主)

頭文件的后綴名一般是.h、.hpp、.hxx等等,一般放置類的聲明、變量的聲明、函數的聲明等等

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536674.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于SSM和微信小程序的高校體育場管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于SSM和微信小程序的高校體育場管理系…

文本編輯器:Sublime Text (安裝+漢化)

下載 Sublime Text - Text Editing, Done Righthttps://www.sublimetext.com/Sublime Text官網 支持mac&#xff0c;Linux&#xff0c;Windows 安裝 選擇安裝路徑 next install 選擇安裝位置安裝就行了 漢化 進入了主界面按 CTRLshiftp 輸入install 選擇第一個 彈窗就按確…

服務器擴容未生效、不成功:解決方法

記一次解決服務器擴容未生效的解決辦法 老板&#xff1a;失憶啊&#xff0c;我花錢給服務器擴容了10000000G&#xff0c;但是數據庫和mq都還是用不了&#xff0c;到底是不是服務器磁盤滿了&#xff0c;你到底有沒有查一下什么原因導致服務用不了啊。 失憶&#xff1a;老板您確…

概率論1:下象棋問題(3.5)

每日小語 時刻望著他人的眼色行事&#xff0c;是騰飛不了的。自己怎么想就積極地去做&#xff0c;這是需要膽量的。——廣中平佑 題目 甲、乙二人下象棋&#xff0c; 每局甲勝的概率為a,乙勝的概率為b. 為簡化問題&#xff0c;設沒有和局的情況&#xff0c;這意味著a b1. 設想…

VR全景對普通人的生活有哪些好處?

許多普通人對VR全景還全然沒有概念&#xff0c;這是因為VR全景雖然一直在快速發展&#xff0c;但目前為止也不過幾年而已&#xff0c;但這發展的幾年同樣為我們普通人的生活帶來了切實的改變和便利。VR全景技術為人們帶來了沉浸感和真實感的體驗&#xff0c;讓我們感受到迥異于…

第十四章 集合(Set)

一、Set 接口&#xff08;P518&#xff09; 1. Set 接口基本介紹 &#xff08;1&#xff09;無序&#xff08;添加和取出的順序不一致&#xff09;&#xff0c;沒有索引。 &#xff08;2&#xff09;不允許重復元素&#xff0c;所以最多包含一個 null。 2. Set 接口的常用方法…

數據結構:KMP算法

1.何為KMP算法 KMP算法是由Knuth、Morris和Pratt三位學者發明的&#xff0c;所以取了三位學者名字的首字母&#xff0c;叫作KMP算法。 2.KMP的用處 KMP主要用于字符串匹配的問題&#xff0c;主要思想是當出現字符串不匹配時&#xff0c;我們可以知道一部分之前已經匹配過的的文…

【期刊周報1】醫學好刊(SCI/SSCI/EI),含Top,領域廣,接收快!

為了向廣大學者朋友提供更優質的選刊服務&#xff0c;提高選刊質量&#xff0c;我處現開設周報專欄&#xff0c;以羅列我處合作的優質期刊~ 本期&#xff0c;小編給大家推薦的是醫學領域相關的熱門期刊&#xff0c;接收領域廣&#xff0c;無預警&#xff0c;且在最新檢索目錄內…

Python遙感影像深度學習指南(2)-在 PyTorch 中創建自定義數據集和加載器

在上一篇 文章中,我們Fast.ai 在衛星圖像中檢測云輪廓,檢測物體輪廓被稱為語義分割。雖然我們用幾行代碼就能達到 96% 的準確率,但該模型無法考慮數據集中提供的所有輸入通道(紅、綠、藍和近紅外)。問題在于,深度學習框架(如 Keras、Fast.ai 甚至 PyTorch)中的大多數語…

油煙凈化器如何做到高效凈化?科技力量,清新餐飲生活

我最近分析了餐飲市場的油煙凈化器等產品報告&#xff0c;解決了餐飲業廚房油膩的難題&#xff0c;更加方便了在餐飲業和商業場所有需求的小伙伴們。 油煙凈化器的出現&#xff0c;為我們的餐飲生活注入了一抹清新的色彩。然而&#xff0c;它究竟是如何工作的&#xff1f;為何能…

【開題報告】基于SSM的健康飲食系統設計與實現

1.研究背景 如今&#xff0c;隨著人們生活水平的提高和健康意識的增強&#xff0c;越來越多的人開始關注自己的飲食習慣&#xff0c;并希望通過合理的飲食來維持身體健康。然而&#xff0c;對于許多人來說&#xff0c;了解和選擇合適的飲食方式并不容易。傳統的飲食指導往往比…

【并發設計模式】聊聊Immutability模式利用不變性解決并發問題

上一篇文章&#xff0c;我們介紹了如何利用二階段停止協議進行優雅停止線程和線程池&#xff0c;本篇介紹在并發編程中數據安全性&#xff0c;我們知道針對于數據的操作&#xff0c;讀和寫(添加、刪除、修改), 在并發線程讀寫的時候&#xff0c;變量不加鎖的情況下&#xff0c;…

redis哨兵+redis主從復制(在虛擬機centos的docker下)

1.安裝docker Docker安裝(CentOS)簡單使用-CSDN博客 2.redis主從復制 redis主從復制(在虛擬機centos的docker下)-CSDN博客 3.編輯3個redis配置 cd /etc mkdir redis-sentinel cd redis-sentinel/ wget http://download.redis.io/redis-stable/sentinel.confcp sentinel.co…

ssh 免密登陸公鑰設置失敗分析調試

前景 看到這里肯定已經知道如何設置免密登陸。本文主要用于解決免密登陸設置失效問題。 ssh調試 目的 ssh設置了公鑰仍然無法免密登陸; 需要調試 解決 通過systemctl status sshd的日志輸出查看原因 步驟 打開調試 systemctl status sshd查看所在服務文件 $ sudo sys…

【并發編程篇】讀鎖readLock()和寫鎖writeLock()

文章目錄 &#x1f6f8;情景引入?解決問題 readLock()和writeLock()都是ReadWriteLock接口中定義的方法&#xff0c;用于獲取讀鎖和寫鎖。 readLock()方法返回一個讀鎖&#xff0c;允許多個線程同時獲取該鎖&#xff0c;以進行并發讀取操作。如果當前已有一個寫鎖或其他線程正…

GIT具體配置步驟詳解

GIT配置具體步驟如下 SDK 使用 Repo 工具管理&#xff0c;拉取 SDK 需要配置安裝 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workf…

裝飾器模式和責任鏈模式區別

近期看了 mybatis 的源碼&#xff0c;發現二級緩存這塊用了裝飾器模式將各個功能的緩存進行嵌套&#xff0c;源碼上也是講到使用了裝飾器模式&#xff0c;但是看著跟責任鏈模式類似&#xff0c;本著搞清楚的想法&#xff0c;搜了很多資料&#xff0c;看了書籍《Head First 設計…

AI行業新趨勢:百模大戰中的變革與未來

AI行業新趨勢&#xff1a;百模大戰中的變革與未來 人工智能&#xff0c;這個曾經被視為科幻小說的情節&#xff0c;如今已經成為我們生活中的常態。從智能手機、自動駕駛汽車&#xff0c;到智能家居、醫療診斷&#xff0c;AI的應用已經深入到我們生活的各個角落。然而&#xf…

多維時序 | MATLAB實CNN-BiGRU-Mutilhead-Attention卷積網絡結合雙向門控循環單元網絡融合多頭注意力機制多變量時間序列預測

多維時序 | MATLAB實現CNN-BiGRU-Mutilhead-Attention卷積網絡結合雙向門控循環單元網絡融合多頭注意力機制多變量時間序列預測 目錄 多維時序 | MATLAB實現CNN-BiGRU-Mutilhead-Attention卷積網絡結合雙向門控循環單元網絡融合多頭注意力機制多變量時間序列預測預測效果基本介…

ubuntu 22.04 安裝mysql服務

完整內容&#xff1a; https://developer.aliyun.com/article/1260321 # 安裝服務 sudo apt install mysql-server# 按向導設置root密碼 sudo mysql_secure_installation# 使用設置的密碼登錄 sudo mysql -u root -p也可以使用工具登錄&#xff0c;例如: navicat for mysql