C++中struct也有构造函数与析构函数,也可以有访问类型控制,可以用private关键字。如下所示:
#include <iostream>
struct point
{
public:
point():x_(0.0),y_(0.0)
{
std::cout<<"default constructor point\n";
}
point(double x,double y):x_(x),y_(y)
{
std::cout<<"constructor point("<<x<<", "<<y<<")\n";
}
~point()
{
std::cout<<"default destructor point\n";
}
double get_x()
{
return x_;
}
double get_y()
{
return y_;
}
private:
double x_;
double y_;
};
class point_class
{
public:
point_class():x_(0.0),y_(0.0)
{
std::cout<<"default constructor point_class\n";
}
point_class(double x,double y):x_(x),y_(y)
{
std::cout<<"constructor point_class("<<x<<", "<<y<<")\n";
}
~point_class()
{
std::cout<<"default destructor point_class\n";
}
double get_x()
{
return x_;
}
double get_y()
{
return y_;
}
private:
double x_;
double y_;
};
int main()
{
point pt;
std::cout << pt.get_x() << "\n";
std::cout << pt.get_y() << "\n";
std::cout << "sizeof( double ): " << sizeof( double ) <<
", sizefof( point ): " << sizeof( point ) << "\n";
point_class pt_c;
std::cout << "sizeof( double ): " << sizeof( double ) <<
", sizefof( point_class ): " << sizeof( point_class ) << "\n";
}
输出结果为:
default constructor point
0
0
sizeof( double ): 8, sizefof( point ): 16
default constructor point_class
sizeof( double ): 8, sizefof( point_class ): 16
default destructor point_class
default destructor point
与C语言的区别:
1、C++中struct可以定义函数,但是C语言中struct只可以定义函数指针。
2、C语言中sizeof( struct ),会把定义的函数指针计算大小;C++中sizeof( struct ) 和 sizeof( class )都不会计算函数的大小,只会计算成员变量的大小。
http://blog.csdn.net/devil_2009/article/details/6871324