日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

初始化列表 static成員

作者:DayDay upup 更新時間: 2022-09-22 編程語言

文章目錄

    • 1.初始化列表
    • 2.static成員

1.初始化列表

初始化列表:以一個冒號開始,接著是一個以逗號分隔的數據成員列表,每個"成員變量"后面跟一個放在括號中的初始值或表達式。

class Date
{
public:
 Date(int year = 1, int month = 1, int day = 1)
 : _year(year)
 , _month(month)
 , _day(day)
 {}
 
private:
 int _year;
 int _month;
 int _day;
};

注:

  1. 每個成員變量在初始化列表中只能出現一次(初始化只能初始化一次)
  2. 類中包含以下成員,必須放在初始化列表位置進行初始化:
    引用成員變量
    const成員變量
    自定義類型成員(該類沒有默認構造函數)
class A
{
public:
 A(int a)
 :_a(a)
 {}
private:
 int _a;
};
 
class B
{
public:
 B(int a, int b)
 :_a(a)
 ,_b(b)
 ,_n(10)
 {}
private:
 A _a; // 沒有默認構造函數
 int& _b; // 引用
 const int _n; // const 
};

綜上:盡量使用初始化列表初始化

tips:
成員變量在類中聲明次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先后次序無關

class A
{
public:
 A(int a)
 :_a1(a)
 ,_a2(_a1)
 {}
 
 void Print() {
 cout<<_a1<<" "<<_a2<<endl;
 }
private:
 int _a2;
 int _a1;
};
 
int main() {
 A aa(1);
 aa.Print();
}

在這里插入圖片描述

2.static成員

特性:

  1. 靜態成員為所有類對象所共享,不屬于某個具體的實例

  2. 靜態成員變量必須在類外定義,定義時不添加static關鍵字

class A
{
private:
	static int _a;
};
int A::_a = 0;
  1. 類靜態成員即可用類名::靜態成員或者對象.靜態成員來訪問
class A
{

public:
	static int _a;
};
int A::_a = 0;
int main()
{
	cout << A::_a << endl;
	return 0;
}
  1. 靜態成員函數沒有隱藏的this指針,不能訪問任何非靜態成員

  2. 靜態成員和類的普通成員一樣,也有public、protected、private 3種訪問級別,也可以具有返回值

原文鏈接:https://blog.csdn.net/zjq_love/article/details/124984040

欄目分類
最近更新