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++中(只讨论C++中)。class和struct做类型定义时... 不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些
从语法上,在C++中(只讨论C++中)。class和struct做类型定义时... 不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些
本篇文章是对C++中struct与class的区别进行了详细的分析介绍,需要的朋友参考下
一、C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗?...
在C++中,区分struct与class在C++中的作用,以及使用方法
hash_set c++总结(自定义类型stuct、class)。总结自定义struct、class三个案例。find函数测试,hash_set迭代器。
今天这篇博文主要讲解在C++中关键字struct和class的区别。这篇博文,将会系统的将这两个关键字的不同面进行详细的讲解。 从语法上来讲,class和struct做类型定义时只有两点区别: 1.默认继承权限,如果不指定,来自...
(1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,...
本文中写的都是它们在C++中的异同,而非C 中的,因为在C 中无论是union还是stuct 都没有操作,也没有访问控制的概念。
struct和class有什么区别?最本质的一个区别就是默认的访问控制:默认的继承访问权限,struct是public的,class是private的。
2、C++中的 struct 和 class 有什么区别? 【参考答案】从语法上讲,class和struct做类型定义时只有两点区别: (一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照...
主要介绍了C++中声明类的class与声明结构体的struct关键字,默认情况下结构的所有成员均是公有的,而类的所有成员是私有的,需要的朋友可以参考下
C++封装(class,struct,public,protected,private,friend)的博客例程。 https://blog.csdn.net/flysnow010/article/details/136907034
而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。 C++支持重载,而C语言不支持。 C++有引用,C没有。 C++全部变量的默认链接属性是外链接,而C是内链接。 C 中用const修饰的...
c++中的struct可以继承,可以有成员函数,但是在c中却不行,在c++中struc和class更相似(还是有一些区别的,这里不再叙述),c中struct的内存分布很简单,那么c++中的class(struct)是怎么样的呢? #include ...
c++通过socket udp模式传输struct数据(各种类型数据:int double float char long long等)到c++与python。c++通过socket udp接收数据,python通过enum枚举进行接收并且通过赋值给class类,封装统一方法
类转换为结构体的方法,C++的类到C代码的移植