1. 程式人生 > >C++中struct也有建構函式與解構函式,也可以有訪問型別控制以及結構體大小,類大小

C++中struct也有建構函式與解構函式,也可以有訪問型別控制以及結構體大小,類大小

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

看來,struct與class是小異大同。struct預設訪問許可權是public,class是private;class有繼承,多型機制,而struct沒有。

與C語言的區別:

1、C++中struct可以定義函式,但是C語言中struct只可以定義函式指標。

2、C語言中sizeof( struct ),會把定義的函式指標計算大小;C++中sizeof( struct ) 和 sizeof( class )都不會計算函式的大小,只會計算成員變數的大小。