静态成员和非静态成员有什么区别?
区别一:静态成员有static修饰,而非静态成员没有
区别二:存储位置不同。
静态成员变量存储在全局数据区,由所有的对象共享,不能通过sizeof()求大小,要在class外进行声明或初始化;
非静态成员存在于各自对象中,与struct有相同的内存布局和字节对齐方式
区别三:this指针。
静态成员函数中没有this指针,而非静态成员函数有this指针。
还有一点要注意:不能再静态成员函数中调用非静态成员变量,这是显而易见的,根本无法区分这是那个对象的成员变量。
补充:成员函数是存储在代码段中的
c++如何翻译成c
class ------翻译成--------->struct
也可以用c来实现`面向对象奥//
#include<iostream>
using namespace std;
class Test{
public:
Test(int m){
m_ = m;
}
int get() const{
return m_;
}
static void print() {
cout << "static method" << endl;
}
private:
int m_;
};
int main(){
Test t(4);
cout << t.get() << endl;
t.print();
return 0;
}
#include<stdio.h>
typedef struct Test
{
int m_;
}Test;
void test_init(Test* this, int m){
this->m_ = m;
}
int get(const Test* this){
return this->m_;
}
void print(){
printf("static method\n");
}
int main(){
Test t;
test_init(&t, 4);
printf("%d\n", get(&t));
print();
return 0;
}