C++ 面向?qū)ο?/h2>

C++ 與 C語言 區(qū)別

  • C++ 面向?qū)ο?、標準特性?C 面向過程,函數(shù)+結(jié)構(gòu)體
  • C++可以運行C語言,反之就不行
  • 85%用 C++ 去寫
1、C語言的標準支持:#include<stdio.h>
2、C++標準支持:#include<iostream>

C++

  • 命名空間 (相當于Java內(nèi)部類)
using namespacing std; /
  • 前面引入了命名空間,后面可以省略,eg.
std:cout<<"C++語言"<<std:endl;
可以簡寫為
cout<<"c++語言學習"<<endl
  • endl(換行) 相當于 \n

  • << 是操作符重載,具體實現(xiàn)如下:【不是數(shù)學里邊的運算】

image.png
cout<<"字符"<<endl;
  • 換行也可以用\n
cout<<"鐵頭功\n"
      <<"金剛腿\n"
      <<"鐵布衫\n";

常量

  • C語言的常量是個假常量,用指針可以改
int main(){
const int number = 100;
int *numP = &number;
*numP = 1000;
printf("%d\n",number);//1000 值已經(jīng)修改了
return 0;
}
  • C++語言的常量是真常量,不能修改
const int number = 100;
//int *numP = &number; 編譯的時候 就會報錯
//*numP = 1000;編譯的時候 就會報錯
printf("%d\n",number);//1000 值已經(jīng)修改了

引用

  • 互換兩個數(shù)
    1、指針取地址
void numberChange(int * number1,int * number2){
  int temp = 0;
  temp = * number1;
 *number1 = * number2;
*number2 = temp;
}
int main(){
int number1 = 10;
int number2 = 20;
numberChange(&number1,&number2);
return 0;
}

原理:


image.png

2、C++ 的引用 互換

void numberChange2(int & number1, int & number2){
int temp = 0;
temp = number1;
number1= number2;
number2 = temp;
}
int mian(){
int number1 =10;
int number2 = 20;
numberChange2(number1,number2);
return 0;
}

原理圖

image.png

3、常量引用

  • const Student & student
  • 不能修改其中的變量
typedef struct {
  char name[20];
  int age;
}Student;

image.png

4、函數(shù)重載

  • C語言不支持函數(shù)重載

  • C++ 支持
    using name


    image.png
  • 建造者設計模式

  • 規(guī)范寫法
    1、要有頭文件:.h .hpp ,實現(xiàn)文件:.c .cpp

image.png

2、頭文件只寫申明不寫實現(xiàn)

#include<iostream>
using namespace std;
class Student{
private :
  char * name;
  int age;
public:
  void setAge(int age);//聲明函數(shù)
  void setName(char *age);
  int getAge();
  char * getName( );//聲明函數(shù)
}

具體實現(xiàn)

.c .cpp
#include "Student.h" //引入頭文件
void Student::setAge(int age){
this->age = age;
}
void Student::setName(char * name){
this->name = name;
}


Student * student1;//??臻g
student1.setAge(99);
student1.setName("lisa");
cout<<"name:"<<student1.getName()<<",age:"<<student1.getAge()<<endl;

//堆空間
Student * student2 = new Student();
student2 ->setAge(80);
student2->setName("lisa");
delete student2;//必須手動釋放對象student2
//不能用free(student2)
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容