c語言的封裝屬性和行為分開處理,類型檢測不夠
c++中的封裝 嚴(yán)格類型轉(zhuǎn)換檢測冤议,讓屬性和行為綁定到一起斟薇,屬性和行為作為一個整體來表示生活中的事物。
控制權(quán)限:
class和struct是一個意思恕酸,唯一的不同 默認(rèn)權(quán)限,
public(公共權(quán)限)
struct默認(rèn)權(quán)限是public 胯陋,內(nèi)外部可以直接訪問
private(私有權(quán)限蕊温,子類不可以訪問)
class默認(rèn)的權(quán)限是private 私有權(quán)限,外部不可以訪問遏乔,內(nèi)部可以訪問
建議將類的成員變量設(shè)置為私有
protected(保護(hù)權(quán)限义矛,子類可以訪問)
protected保護(hù)權(quán)限 類內(nèi)部可以訪問 當(dāng)前類的子類可以訪問,類外部不可以訪問
c中封裝
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Person
{
char name[64];
int age;
};
struct Dog
{
char name[64];
int age;
};
void PersonEat(struct Person* p)
{
printf("%s 吃飯\n", p->name);
};
void DogEat(struct Dog * d)
{
printf("%s 吃狗糧\n", d->name);
}
void test()
{
struct Dog d;
strcpy(d.name,"旺財");
DogEat(&d);
struct Person p;
strcpy(p.name, "小王");
// PersonEat(&p);
DogEat(&p);
//可以正常調(diào)用
}
int main()
{
test();
return EXIT_SUCCESS;
}
c++中封裝
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
struct Person
{
char name[64];
int age;
void PersonEat()
{
cout << name << "吃飯" << endl;
}
};
struct Dog
{
char name[64];
int age;
void dogEat()
{
cout << name << "吃飯" << endl;
}
};
void test()
{
Person p1;
strcpy(p1.name, "小王");
p1.PersonEat();
//p1.DogEat(); //類型錯誤
}
int main()
{
test();
return EXIT_SUCCESS;
}