C++(十六) — 類中引用成員函數、命名空間的使用


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");
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM