大部分人在学习C++之前都会用C来打基础,C语言是十分基础的一门语言,学习C语言对于计算机思维的启蒙是非常有帮助的。尽管C++是C语言升级后的一门语言,但它绝不仅仅是C语言派生出的产物,它完全可以说是另外一种语言,所以绝不可以抱着C语言基础不错的心态轻视C++(过来人的经验。。。)。
首先是“类”,这是面向对象和封装的基础,由于C++没有Java那样的垃圾回收机制,所以要程序员自己选择在栈区或者堆区来实例化对象
栈区:
class Classname
{
int a;
...
};
int main()
{
Classname name;
name.a=10; //用 “.”访问成员变量
return 0;
}
在栈区实例化对象,程序会自动调用析构函数来回收栈区的空间,先实例化的对象后回收。析构函数: ~classname(){},无参数,无返回值,用于回收再栈区实例化过的对象。
堆区:
class Classname
{
int a;
...
};
int main()
{
Classname *p = new Classname();
p->a=10; /用“->”访问成员变量
delete p;
p=NULL;
return 0;
}
在堆区实例化对象要借助指针,而且一定要delete掉指向对象的指针(敲黑板),不然程序会一直占用那块被你new出来的内存。
封装
与Java类似,采用由public修饰的函数来访问由private修饰的变量。
class Classname
{
public:
void setA(int _a)
{
m_strA=_a;
}
int getA()
{
return m_strA;
}
private:
int m_strA;
};
int main()
{
Classname name;
name.setA(10);
cout << name.getA() << endl;
return 0;
}
这样可以比较容易地设置一些只读性的变量,和防止用户修改某些变量的值。