但是大家注意到沒有,標準c中是不允許在結構體中聲明函數的,但c++中的類可以,這一點就和c有了本質的區別,很好的體現了c++面向對象的特點!
過去的c語言是一種非面向對象的語言
他的特性是
程序=算法+數據結構
但c++的特性是
對象=算法+數據結構
程序=對象+對象+對象+對象+........
所以根據這一特性,我們在定義一個自己定義的結構體變量的時候,這個變量就應該是叫做對象或者叫實例
例如
test a;
那么a就是test結構的一個對象(實例)
test結構體內的成員可以叫做是分量,例如:
a.socre=10.1f;
那么number就是test結構的對象a的分量(或者叫數據成員,或者叫屬性)score;
在c語言中結構體中的各成員他們的默認存儲控制是public 而 c++中類的默認存儲控制是private,所以在類中的成員如果需要外部掉用一定要加上關鍵字public聲明成公有類型,這一特性同樣使用于類中的成員函數,函數的操作方式和普通函數差別并不大
例如上面的例子中的rp()成員函數,我們如故有如下定義
test a;
的話,調用rp()就應該寫成
a.rp();
成員函數的調用和普通成員變量的調用方式一致都采用.的操作符。
這一小節為了鞏固聯系我給出一個完整的例子。
如下(重要和特殊的地方都有詳細的注解):
//程序作者:管寧
//站點:www.cndev-lab.com
//所有稿件均有版權,如要轉載,請務必著名出處和作者
#include <iostream>
using namespace std;
class test
{
private://私有成員類外不能夠直接訪問
int number;
public://共有成員類外能夠直接訪問
float socre;
public:
int rp()
{
return number;
}
void setnum(int a)
{
number=a;
}
};
void main()
{
test a;
//a.number=10;//錯誤的,私有成員不能外部訪問
a.socre=99.9f;
cout<<a.socre<<endl;//公有成員可以外部訪問
a.setnum(100);//通過公有成員函數setnum()間接對私有成員number進行賦值操作
cout<<a.rp();//間接返回私有成員number的值
cin.get();
}
好了,介紹了在類內部定義成員函數(方法)的方法,下面我們要介紹一下域區分符(::)的作用了。
下面我們來看一個例子,利用這個例子中我們要說明兩個重要問題:
//程序作者:管寧
//站點:www.cndev-lab.com
//所有稿件均有版權,如要轉載,請務必著名出處和作者
#include <iostream>
using namespace std;
int pp=0;
class test
{
private:
int number;
public:
float socre;
int pp;
public:
void rp();
};
void test::rp()//在外部利用域區分符定義test類的成員函數
{
::pp=11;//變量名前加域區分符給全局變量pp賦值
pp=100;//設置結構體變量
}
void main()
{
test a;
test b;
a.rp();
cout<<pp<<endl;
cout<<a.pp<<endl;
cin.get();
}
本新聞共3頁,當前在第1頁 1 2 3