1、為什么類中引用成員函數?
類將屬性和方法做了封裝。類是一種數據類型,也就是:固定大小內存塊的別名。
類的定義是一個抽象的概念,定義時不分配內存,當用類定義對象時,才分配一個固定大小的內存塊。
此時,定義對象后,類內定義的變量就會執行一次初始化,但是主函數輸出area時就是亂碼,因為是直接去對應內存取值,而不是調用函數計算。
下面例子就說明了,類內成員函數的作用。
class circle { public: double r; double pi = 3.14; // 定義一個對象后,初始化時已經執行了,當時r是一個隨機值,所以結果:area內存中也是一個隨機值 double area = pi*r*r; double getS(double r) { double ms = pi*r*r; return ms; } }; int main() { circle c1; cout << "Please input your r: " << endl; cin >> c1.r; // 執行此句話,只是從變量所標示的內存空間中拿值,並沒有執行這句話。 // 所以對 r 賦值, 對area沒有任何影響, cout << c1.area << endl; //亂碼 cout << c1.getS(c1.r) << endl; //輸出:正確的面積值 system("pause"); return 0; }
2、命名空間的使用
(1)當使用 #include <iostream> 時,必須和,using namespace std;一起使用。因為,該頭文件沒有定義全局命名空間,如果不想引用就需要:std::cout,指定命名空間;
(2)C++標准規定,頭文件不用后綴 .h ,如果使用后綴,則調用的C得庫。
(3)C++可以自己定義命名空間,而且可以嵌套命名空間。
#include <iostream> using namespace std; namespace namespaceA { int a = 10; } namespace namespaceB { int a = 20; namespace namespaceC { class Teacher { public: char name[20]; int age; }; } } void main() { using namespace namespaceA; using namespace namespaceB; cout << namespaceA::a << endl; cout << namespaceB::a << endl; using namespaceB::namespaceC::Teacher; Teacher t1; t1.age = 30; cout << t1.age<<endl; system("pause"); }