`
庚午子
  • 浏览: 15093 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

c++中struct与class的不同

c++ 
阅读更多

 

 

c++中struct与class除了关键字不同之外,更重要的是成员控制权限的差异,目前了解的仅此而已。

代码就是王道:

成员变量的默认访问权限不同——struct默认为public,而class默认为private

 

 

#include<iostream>

#include<stdio.h>

#include<malloc.h>

#include<string.h>

using namespace std;

enum Breed {SHIZIGOU,JUANMAOGOU,MUYANGQUAN};

struct Mamal

{

private: int age;

public :

void speak()

{cout<<"speaking"<<endl;}

void sleep()

{cout<<"sleeping"<<endl;}

Mamal():age(4) {}

~Mamal(){}

};

struct Dog:public Mamal

{

int a;

private: Breed dogbreed;

public :

Dog():dogbreed(SHIZIGOU),a(3){}

~Dog(){}

void getdogbreed()

{cout<<dogbreed<<endl;}

};

int main()

{

   Dog dd;

   dd.speak();         //访问基类的成员函数

   dd.getdogbreed();           //必须通过公有接口访问私有成员

   cout<<dd.a<<endl;     //成员a默认为公有

}

-----------------------------------------------------------------------------

 

 

然而,标准的C中是不支持结构体中放置函数成员的,要想在C语言中实现这一功能,需要借助函数指针,例子如下:

 

首先,要确认的一点是C中的struct通过函数指针来调用函数,但函数指针不同于成员函数。之所以有这个问题,是因为C++中的struct已经基本具备“类”的功能,可以有成员函数,且struct具有继承属性。

代码就是王道,以下为正确的演示

#include   

void fun()  

{  

 printf("hello,world ");  

}  

struct test  

{  

 void (*Fun)();  

}; 

int main()  

{  

 struct test _t;  

 _t.Fun = fun;  

 (*_t.Fun)();  

 return 0;  

****************************以下为错误的演示**********************************

#include   

struct test  

{   

      void fun(){printf("hello,world ");}

}; 

int main()  

{  

 struct test _t;   

 _t.fun();

 return 0;  

分享到:
评论

相关推荐

    如何在C++中struct与Class的的区别

    从语法上,在C++中(只讨论C++中)。class和struct做类型定义时... 不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些

    深入C++中struct与class的区别分析

    本篇文章是对C++中struct与class的区别进行了详细的分析介绍,需要的朋友参考下

    EDA/PLD中的如何在C++中struct与Class的的区别

    在C++中,由于历史原因和C语言的兼容性,`struct`仍然存在,但建议在不需要与C兼容或传递参数给C程序的情况下,优先使用`class`,以更好地体现面向对象的设计思想。同时,类的成员在内存中的布局并不一定按照声明...

    C++中struct和class的区别

    一、C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。  struct能包含成员函数吗? 能!  struct能继承吗? 能!!  struct能实现多态吗?...

    浅析c与c++中struct的区别

    C的struct与C++的class的区别 在C语言中,`struct`是一个基本的数据结构,它允许我们将多个不同类型的数据成员组合在一起。C语言中的struct不支持方法(成员函数),只能包含数据成员。例如: ```c struct Point ...

    C++结构体struct和类class区别详解

    C++语言中,struct和class都是用于定义复杂数据类型的关键字,但是它们之间有着本质的区别。最重要的一点区别就在于默认的访问控制权限,struct默认的继承访问权限是public的,而class默认的继承访问权限是private的...

    c++面向对象基础二(struct详解)

    在C++中,`struct`是一种用户自定义的数据类型,它可以封装多个不同类型的变量,类似于C语言中的结构体。然而,与C语言不同的是,C++的`struct`可以拥有方法(成员函数)和访问控制,这使得它具备了面向对象特性。 ...

    c++通过socket udp模式传输struct数据到c++与python

    c++通过socket udp模式传输struct数据(各种类型数据:int double float char long long等)到c++与python。c++通过socket udp接收数据,python通过enum枚举进行接收并且通过赋值给class类,封装统一方法

    Desktop_struct与class的区别_

    在C++编程语言中,`struct`和`class`都是用于定义数据结构的关键词,但它们之间存在一些关键区别,这些区别主要体现在访问控制、默认成员访问修饰符和默认构造函数上。 首先,访问控制是两者最显著的区别。在`class...

    c++中STRUCT的使用技巧,编程练习题。.zip

    在C++编程中,`struct` 是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体。这使得我们能够更有效地组织和管理数据。本篇将深入探讨`struct`在C++中的使用技巧,并提供一些编程练习题以帮助...

    C++ 中的union、struct 和class 的异同

    本文中写的都是它们在C++中的异同,而非C 中的,因为在C 中无论是union还是stuct 都没有操作,也没有访问控制的概念。

    hash_set c++总结(自定义类型struct、class)

    hash_set c++总结(自定义类型stuct、class)。总结自定义struct、class三个案例。find函数测试,hash_set迭代器。

    C++封装例程(class,struct,public,protected,private,friend)

    C++封装(class,struct,public,protected,private,friend)的博客例程。 https://blog.csdn.net/flysnow010/article/details/136907034

    详解C++程序中定义struct结构体的方法

    在C++编程语言中,结构体(struct)是C语言中的概念被继承过来的,它允许用户将不同的数据类型组合成一个单一的复合类型。C++中的结构体不仅可以包含不同数据类型的成员,而且可以拥有成员函数,这在C语言中是不支持的...

    C++中声明类的class与声明结构体的struct关键字详解

    在C++编程语言中,`class`和`struct`关键字都是用来定义复合数据类型的,但它们之间存在一些关键差异。本文将深入解析这两个关键字,并通过示例解释它们在实际编程中的应用。 首先,`class`关键字用于声明一个类,...

    Class to struct

    - **结构体(Struct)**:C和C++中的一种数据类型,用于组合不同类型的变量。在C++中,结构体可以包含成员函数。 - **函数指针**:指向函数的指针,可以在运行时指向不同的函数。 #### 类转换为结构体的基本策略 1....

Global site tag (gtag.js) - Google Analytics