C++基礎
1.什麼是c++。
c++是c語言的升級版,在c的基礎上增加了很多功能。是一種高階語言。
2.什麼是物件導向,什麼又是程序導向。
c語言就是程序導向的,c++就是物件導向的。
舉例:a+b
直接計算a+b就是程序導向。
物件導向就是給a+b穿上了一層衣服。不是直接計算a+b。
3.c++的靈魂,c++的類。
類大家可以把他看成c語言結構體的升級版。類的成員不僅可以是變數,也可以是函式。
4.如何定義一個類。
class student
{
public:
char name[64];
char age;
};
5.什麼是物件。
物件是類的例項化。
6.如何定義一個物件。
直接定義:
student my; // student就是類 my就是物件
在堆裡面定義。
student *my = new student;
刪除物件
delete my; //只能釋放堆裡面定義的,不能釋放直接定義的物件
7.怎麼訪問類的成員。
student my;
student *my1 = new student;
my.age = 18;
my1->age =19;
cout << my.age << endl;
cout << my1->age << endl;
訪問方法和C語言是一樣的,普通變數透過. 指標透過->
8.類的函式成員。
因為類裡面的成員不僅可以是變數,也可以是函式。
第一步:在類裡面宣告
第二步:實現這個函式。我們可以直接在類裡面寫,也可以寫在類的外面。
直接寫在類的裡面
class student
{
public:
char name[64];
int age;
void test(){
cout << 123 << endl;
}
};
寫到類的外面
class student
{
public:
char name[64];
int age;
void test();
};
void student::test(){ //student::表示屬於這個類裡面的函式,不加的話會被識別成普通函式。
cout << 123 << endl;
}
訪問函式和訪問變數是一樣的。
9.類的訪問修飾符。
類的訪問修飾符就是對類的成員進行許可權管理。
public:表示函式和變數是公開的,任何人都可以訪問。
private:表示函式和變數只能在自己的類裡面自己訪問自己,不能透過物件來訪問。
protected:表示函式和變數只能在自己的類裡面自己訪問自己,但是可以被派生類來訪問的。
10.類函式的過載特性
類函式的過載特性就是說我們可以在類裡面定義同名的函式,但是引數不同的函式。
class student
{
public:
char name[64];
int age;
void test();
void test(int a); //過載test函式
private:
int haha;
};
過載函式在呼叫的時候,會根據引數的型別,然後去匹配相應的函式進行呼叫。
11.建構函式和解構函式
解構函式:假如我們定義了解構函式,當物件被刪除或者生命週期結束的時候,就會觸發解構函式。
直接定義的物件會自動刪除物件呼叫解構函式, 堆裡定義的物件得delete才能刪除物件,呼叫解構函式
建構函式:假如我們定義了建構函式,就會觸發這個建構函式。
我們要怎麼定義解構函式和建構函式?
1.解構函式和建構函式的名字必須和類名一模一樣。
2.解構函式要在前面加上一個~
舉例:
class student
{
public:
student();
~student();
char name[64];
int age;
void test();
void test(int a);
private:
int haha;
};
student::student(){
cout << "hello" << endl;
}
student::~student(){
cout << "bye" << endl;
}
建構函式是可以被過載的。
解構函式不能被過載。
12.類的繼承
什麼是類的繼承?
類的繼承允許我們在新的類裡面繼承父類的public還有protected部分,private是不能被繼承的。
當我們覺得這個類不好的時候,可以使用類的繼承,新增我們需要的功能。
格式:
class 兒子:public 爸爸{
public:
........
Protected:
}
例子:
class mystudent:public student
{
public:
int grade;
};
如果在子類裡面去訪問父類的成員?
也是透過.和->來訪問的。
13.虛擬函式和純虛擬函式
虛擬函式:有實際定義的,允許派生類對他進行覆蓋式的替換,virtual來修飾。
純虛擬函式:沒有實際定義的虛擬函式就是純虛擬函式。
舉例:
virtual void test(); //虛擬函式
virtual void testa(){} //純虛擬函式
怎麼定義一個虛擬函式?
用virtual來修飾,虛擬函式是用在類的繼承上的。
虛擬函式的優點?
可以預留介面,實現分工合作。