結構體在c和C++中的區別

剛看到論壇裏在討論題目中的內容,連接:http://bbs.csdn.net/topics/390113751c++

之前倒也沒認真想過這個問題,看了那個帖子後總結了下。函數

1. c中沒有類的概念,因此天然沒有構造、析構函數、成員函數,只有數據測試

   而在c++中能夠當成類來使用.net

C++ supports a second keyword, struct, that can be used to define class types. The struct keywords is inherited from C.
If we define a class using the class keyword, then any members defined before the first access label are implicitly private; if we use the struct keyword, then those members are public. Whether we define a class using the class keyword or the struct keyword affects only the default initial access level.指針

 2. 在c中不能被繼承code

     而在c++中能夠繼承

3. 也有指出函數指針的使用ci

#include <stdio.h>
//幾個用於測試的函數 
int max(int a, int b)
{
	return a > b ? a : b; 
}

int min(int a, int b)
{
	return a < b ? a : b; 
} 

//結構體 
struct func
{
  int (*max)(int, int);//函數指針 
  int (*min)(int, int);
};

typedef struct func func; //添加別名 

void init(func *data)
{
	data->max = max;//初始化函數指針 
	data->min = min; 
} 

int main()
{
	int a, b; 
	func test;
	
	init(&test); //初始化,你能夠說它是構造函數 
	
	a = test.max(100, 215);
	b = test.min(64, 42); 
	
	printf("result:\nmax: %d\nmin: %d\n", a, b); 
	return 0; 
}

上面這段代碼最好寫成.c文件get

可是函數指針的使用對結構體而言成員不是函數,仍是數據成員,相似於int *p。it

以上是根據最上面貼的討論總結的,歡迎留言。

經一同事的提醒,題目也能夠理解成c的結構體跟c++的類之間的區別,哈哈

相關文章
相關標籤/搜索