程式碼1:轉義字元
點選檢視程式碼
#include<iostream>
using namespace std;
void test01()//換行
{
cout << "Hello World" << endl;
//等價於cout << "Hello World\n" << endl;
}
void test02()//反斜槓
{
cout<<"\\"<<endl;
//打入兩個反斜槓才輸出一個反斜槓
}
void test03()//水平製表符\t
{
//cout << "1111aaa\tHelloWorld" << endl;
//\t佔8個空格 主要是為了整齊的輸出其後面的內容
cout << "111aaa\thelloworld" << endl;
cout << "111a\thelloworld" << endl;
cout << "111aa\thelloworld" << endl;
//
cout << "111aaa helloworld" << endl;
cout << "111a helloworld" << endl;
cout << "111aa helloworld" << endl;
//沒有\t並不會自動對齊
}
int main()
{
test03();
system("pause");
return 0;
}
程式碼2:字串型別
點選檢視程式碼
//字串型
//C語言的形式:char 變數名字[] = "字串值";
//C++的形式:string 變數名字 = "字串值";
#include<iostream>
using namespace std;
//#include<string>
int main()
{
char str[] = "Hello World";
cout << str << endl;
string arr = "Hello World";
//包含標頭檔案
cout << arr << endl;
return 0;
}
程式碼3:布林型別
點選檢視程式碼
<details>
<summary>點選檢視程式碼</summary>
include
using namespace std;
int main()
{
bool flag = true;
cout << flag << endl;
//結果為1
flag = false;
cout << flag << endl;
//結果為0
cout << sizeof(bool) << endl;
//bool所佔記憶體空間:1個位元組大小
return 0;
}
</details>
//布林型別只要是非0的值都代表是真
程式碼4:取模運算
//兩個整數相除結果依然為整數
//兩個小數是可以相除的
//運算結果也可以為小數
//兩個數相除 除數不可以為0
點選檢視程式碼
#include<iostream>
using namespace std;
int main()
{
//取模
cout << 10 % 20 << endl;//10
cout << 10 % 3 << endl;//1
cout << 10 % 0 << endl;//10不可以除以0
//cout << 1.1 % 2.1 << endl;//兩個小數是不可以進行取模運算的
return 0;
}
//只有整型變數才可以進行取模運算
程式碼5:隨機數
點選檢視程式碼
#include<iostream>
using namespace std;
//#include<ctime>
int main()
{
//新增隨機數種子
//利用當前系統的時間去生成隨機數 防止每一次隨機數都一樣
srand((unsigned int)time(NULL));
int num1 = rand() % 100;//產生0到99
int num2 = rand() % 100 + 1;//產生1到100
int num3 = 0;
for (int i = 1;1; i++)
{
cin >> num3;
if (num3 > num1)
{
cout << "猜大了" << endl;
}
else if (num3 < num1)
{
cout << "猜小了" << endl;
}
else
{
cout << "猜對了" << endl;
break;
}
}
return 0;
}
// srand((unsigned int)time(NULL));隨機數種子
程式碼6:成員變數和成員函式分開儲存
只有非靜態的成員變數才屬於類的物件上
點選檢視程式碼
#include<iostream>
using namespace std;
//成員變數 和 成員函式 是分開儲存的
class Person
{
int m_A;//非靜態的成員變數 - 屬於類的物件上
static int m_B;//靜態成員變數 - 不屬於類的物件上
void func(){}//非靜態的成員函式 - 不屬於類的物件上
static void funcc(){} //靜態成員函式 - 不屬於類的物件上
};
int Person::m_B = 190;
void test01()
{
Person p1;
//空物件 佔用的記憶體空間為:1
cout << sizeof(p1) << endl;//1
//每個空物件也應該有一個獨一無二的記憶體空間地址
}
void test02()
{
Person p1;
cout << sizeof(p1) << endl;//4
}
int main()
{
//只有非靜態的成員變數才屬於類的物件上
test02();
return 0;
}
程式碼7:this指標
:可以解決名稱衝突
可以返回物件本身使用*this
點選檢視程式碼
#include<iostream>
using namespace std;
class Person
{
public:
Person(int age)
{
//this指標
//this指標指向 被呼叫的成員函式 所屬的物件
this->age = age;
}
//Person PersonAddAge(Person& p) 以值的方式去返回
Person& PersonAddAge(Person& p)
{
this->age += p.age;
//this指向的就是p2的指標 那麼*this就是指向的p2這個物件本體
return *this;
//返回本體需要使用引用的方式
}
int age;
};
//解決名稱衝突
void test01()
{
Person p1(190);
cout << p1.age << endl;
}
//返回物件本身使用*this
void test02()
{
Person p1(190);
Person p2(191);
//p2.PersonAddAge(p1);
Person p3(1);
p2.PersonAddAge(p1).PersonAddAge(p3).PersonAddAge(p3);
//鏈式程式設計思想
cout << p2.age << endl;
}
int main()
{
test02();
//190+191=381
return 0;
}
程式碼8:空指標訪問成員函式
點選檢視程式碼
#include<iostream>
using namespace std;
//空指標訪問成員函式
class Person
{
public:
void ShowAge()
{
cout << "Age" << endl;
}
void Showage()
{
if (this == NULL)
{
return;
}
//cout << m_Age << endl;
//傳入的指標是為空的(NULL)
cout << this->m_Age << endl;
}
int m_Age;
};
void test01()
{
Person* p = NULL;
//p->ShowAge();
p->Showage();
}
int main()
{
test01();
return 0;
}
程式碼9:
const修飾成員函式
首先 常函式:
點選檢視程式碼
#include<iostream>
using namespace std;
class Person
{
public:
//this指標的本質就是:指標常量
//指標常量 是常量 不是指標 指標的指向是不可以修改的
void showPerson() const//常函式
{
m_B = 191;
this->m_B = 190;//未報錯
//因為 this指標的本質可以表示為:Person* const this;是一個指標常量 在Person*前面在加一個const
//const Person* const this; 就是對應得值也不可以修改了 等價於我們在成員函式後面加const
//所以說在成員函式後面加const 修飾的就是this指標 讓指標指向的值也不可以修改
//m_A = 100;
// 等價於this->m_A = 100;
//this = NULL;//this指標是不可以修改指標的指向的
//不想被修改值 需要在函式名字後面加const
}
int m_A;
mutable int m_B;//可以在常函式當中修改成員變數的值
};
//在成員函式後面加上const 該函式稱為常函式
//常函式內部是不可以修改成員屬性的
//成員屬性宣告的時候加關鍵字mutable之後 可以在常函式當中修改
void test01()
{
Person p;
p.showPerson();
}
//在宣告物件的前面加上const 這個物件叫做常物件
//常物件只可以呼叫常函式
int main()
{
test01();
return 0;
}
點選檢視程式碼
#include<iostream>
using namespace std;
class Person
{
public:
void func()
{
m_A = 1;
}
//this指標的本質就是:指標常量
//指標常量 是常量 不是指標 指標的指向是不可以修改的
void showPerson() const//常函式
{
m_B = 191;
this->m_B = 190;//未報錯
//因為 this指標的本質可以表示為:Person* const this;是一個指標常量 在Person*前面在加一個const
//const Person* const this; 就是對應得值也不可以修改了 等價於我們在成員函式後面加const
//所以說在成員函式後面加const 修飾的就是this指標 讓指標指向的值也不可以修改
//m_A = 100;
// 等價於this->m_A = 100;
//this = NULL;//this指標是不可以修改指標的指向的
//不想被修改值 需要在函式名字後面加const
}
int m_A;
mutable int m_B;//可以在常函式當中修改成員變數的值
};
//在成員函式後面加上const 該函式稱為常函式
//常函式內部是不可以修改成員屬性的
//成員屬性宣告的時候加關鍵字mutable之後 可以在常函式當中修改
void test01()
{
Person p;
p.showPerson();
}
//在宣告物件的前面加上const 這個物件叫做常物件
//常物件只可以呼叫常函式
void test02()
{
const Person p; //在物件的前面 加上 const 變為常物件
//依然不允許修改指標指向的值
//p.m_A = 100;//no
p.m_B = 190;//yes
//m_B 是特殊值 在常物件下面也可以修改
//常物件只可以呼叫常函式
p.showPerson();
//p.func();
//常物件 不可以呼叫普通的成員函式 因為普通的成員函式是可以修改屬性的
}
int main()
{
test01();
return 0;
}