类和对象
一.结构体在C和C++中不同
1.在C++中,用结构体定义变量不需要加struct,而C不行。
2.在C++中,可以定义空结构体,大小为1,而C不行。
3.在C++中,可以在结构体中声明甚至定义函数,在C中只能定义函数指针。
4.在C++中,成员函数可以直接访问结构体内的的成员变量而无需传入,在C中函数和结构并无直接联系。
成员函数不影响结构体的大小
因为成员函数是放在公共区域的,只是在这个结构体的域中而已
二.类
类是一种特殊的结构体,在上述结构体中,加入public:,把struct改成class就成了一个简单的类
访问限定符:
public:正常访问
private:只能在类内部访问
protected:目前跟private没有区别
1.访问限定符只是在编译阶段生效,编译好后,在运行阶段并没有限定。
2.结构体也能使用访问限定符,只是一般不使用,因为它是用来兼容c结构体的
3.结构体中默认为public,类中默认为private
三.this指针
一般成员函数中都含有this指针,这个指针指向调用这个成员函数的对象。
成员函数中,this指针中的成员函数不需要使用this指针来访问,直接访问即可。
this的类型是当前类类型的指针,this是一个常量指针,不能更改指向
#include <iostream>
using namespace std;
class ct{
int a;
public:
double b;
char c;
void test() {
}
void changeA(int i) {
a = i;
}
//成员函数中可以直接使用自己的成员变量
void printA() {
printf("%d\n", a);
}
protected:
void printB();
};
void ct::printB() {
printf("%.2lf\n", b);
}
int main() {
ct c;
ct d;
ct * pc = nullptr;
c.changeA(5);
c.printA();
d.changeA(6);
d.printA();
pc->test();
//cout << sizeof(ct) << endl;
return 0;
}