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

c++中struct与class的不同

阅读更多

 

 

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;  

分享到:
评论

相关推荐

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

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

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

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

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

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

    C++中struct和class的区别

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

    Desktop_struct与class的区别_

    在C++中,区分struct与class在C++中的作用,以及使用方法

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

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

    C++中关键字Struct和Class的区别

    今天这篇博文主要讲解在C++中关键字struct和class的区别。这篇博文,将会系统的将这两个关键字的不同面进行详细的讲解。 从语法上来讲,class和struct做类型定义时只有两点区别: 1.默认继承权限,如果不指定,来自...

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

    (1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,...

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

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

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

    struct和class有什么区别?最本质的一个区别就是默认的访问控制:默认的继承访问权限,struct是public的,class是private的。

    C++面试题基础知识回顾

    2、C++中的 struct 和 class 有什么区别? 【参考答案】从语法上讲,class和struct做类型定义时只有两点区别: (一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照...

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

    主要介绍了C++中声明类的class与声明结构体的struct关键字,默认情况下结构的所有成员均是公有的,而类的所有成员是私有的,需要的朋友可以参考下

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

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

    完结7章C++大厂面试真题宝典 精选100道

    而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。 C++支持重载,而C语言不支持。 C++有引用,C没有。 C++全部变量的默认链接属性是外链接,而C是内链接。 C 中用const修饰的...

    C++虚函数实现机制以及类继承中的内存分布

    c++中的struct可以继承,可以有成员函数,但是在c中却不行,在c++中struc和class更相似(还是有一些区别的,这里不再叙述),c中struct的内存分布很简单,那么c++中的class(struct)是怎么样的呢? #include ...

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

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

    Class to struct

    类转换为结构体的方法,C++的类到C代码的移植

Global site tag (gtag.js) - Google Analytics