一、類
1.通路控制
class student {
int age;//預設私有控制
public:
string name;
double weight;
};
2.成員函數
- 定義成員函數時,使用::辨別函數所屬的類
- 類方法可以通路類的private元件
成員函數聲明與普通函數相同,定義時分類外定義和類内定義
類内定義,在類中聲明的函數都是預設都是内聯函數(加上inline)
#include<iostream>
using namespace std;
class student {
public:
int sum(int a, int b) {
return a + b;
}
};
void main() {
student stu;//建立對象
int a=stu.sum(3, 4);
cout << a << endl;
}
類外定義
#include<iostream>
using namespace std;
class student {
public:
int sum(int a,int b);//函數聲明
};
inline int student::sum(int a, int b) {//類外定義
return a + b;
}
void main() {
student stu;//建立對象
int a=stu.sum(3, 4);
cout << a << endl;
}
再強調下内聯函數的作用:内聯函數和普通函數的差別在于:當編譯器處理調用内聯函數的語句時,不會将該語句編譯成函數調用的指令,而是直接将整個函數體的代碼插人調用語句處,就像整個函數體在調用處被重寫了一遍一樣。有了内聯函數,就能像調用一個函數那樣友善地重複使用一段代碼,而不需要付出執行函數調用的額外開銷。很顯然,使用内聯函數會使最終可執行程式的體積增加。以時間換取空間,或增加空間消耗來節省時間,這是計算機學科中常用的方法 。
二、構造函數和析構函數
1.構造函數
為了隐藏資料,并且在建立時進行初始化,創造了構造函數的功能.
(1)使用帶參構造函數
#include<iostream>
using namespace std;
class student {
int m_a = 1;
int m_b = 1;
public:
student() {
}//預設構造函數
student(int a, int b) {
m_a = a;
m_b = b;
}//帶參構造函數
int sum() {
return m_a + m_b;
};
};
void main() {
student stu1 = student{1,1};//1.顯示調用構造函數
int a1 = stu1.sum();
cout <<"顯示調用構造函數 "<< a1 << endl;
student stu2 ( 2,2 );//2.隐式調用構造函數
int a2= stu2.sum();
cout << "隐式調用構造函數 " << a2 << endl;
student *stu3 = new student(3, 3);//3.動态調用構造函數
int a3=stu3->sum();
cout << "動态調用構造函數 " << a3 << endl;
}
(2)預設構造函數
class student {
public:
student() {
cout << "調用構造函數"<< endl;
}
};
void main() {
//調用預設構造函數的幾種方式
student stu1;
student stu2= student();
student *stu3 = new student;
}
注意
student stu1();//這是一個傳回student對象的函數,而不是構造函數
c++11 清單初始化
student stu1 = { 3,5 };
2.析構函數
#include<iostream>
using namespace std;
class student {
public:
student() {
cout << "調用構造函數"<< endl;
}
~student() {
cout << "調用析構函數" << endl;
}
};
void main() {
{
student stu1;//這是一個傳回student對象的函數,而不是構造函數
}
}
3.const成員函數
const成員函數内不運作修改成員屬性,被添加mutable的成員函數可以被const函數修改
void sum(int &a,int b) const {//const放在方法的後面,使得該程式下成員函數不能被修改
a = 200;
}
const指針修飾的是被隐藏的this指針所指向的記憶體空間,修飾的是this指針
三、this指針
this指針指向被調用的成員函數所屬的對象。
this指針隐含每一個非靜态成員函數内的指針。
用途:
this 同名參數
類的非靜态成員函數中傳回對象本身,可用return *this