C++中struct也有建構函式與解構函式,也可以有訪問型別控制以及結構體大小,類大小
阿新 • • 發佈:2019-01-27
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 )都不會計算函式的大小,只會計算成員變數的大小。