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++中struct与class的区别进行了详细的分析介绍,需要的朋友参考下
在C++中,由于历史原因和C语言的兼容性,`struct`仍然存在,但建议在不需要与C兼容或传递参数给C程序的情况下,优先使用`class`,以更好地体现面向对象的设计思想。同时,类的成员在内存中的布局并不一定按照声明...
一、C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗?...
C的struct与C++的class的区别 在C语言中,`struct`是一个基本的数据结构,它允许我们将多个不同类型的数据成员组合在一起。C语言中的struct不支持方法(成员函数),只能包含数据成员。例如: ```c struct Point ...
C++语言中,struct和class都是用于定义复杂数据类型的关键字,但是它们之间有着本质的区别。最重要的一点区别就在于默认的访问控制权限,struct默认的继承访问权限是public的,而class默认的继承访问权限是private的...
在C++中,`struct`是一种用户自定义的数据类型,它可以封装多个不同类型的变量,类似于C语言中的结构体。然而,与C语言不同的是,C++的`struct`可以拥有方法(成员函数)和访问控制,这使得它具备了面向对象特性。 ...
c++通过socket udp模式传输struct数据(各种类型数据:int double float char long long等)到c++与python。c++通过socket udp接收数据,python通过enum枚举进行接收并且通过赋值给class类,封装统一方法
在C++编程语言中,`struct`和`class`都是用于定义数据结构的关键词,但它们之间存在一些关键区别,这些区别主要体现在访问控制、默认成员访问修饰符和默认构造函数上。 首先,访问控制是两者最显著的区别。在`class...
在C++编程中,`struct` 是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体。这使得我们能够更有效地组织和管理数据。本篇将深入探讨`struct`在C++中的使用技巧,并提供一些编程练习题以帮助...
本文中写的都是它们在C++中的异同,而非C 中的,因为在C 中无论是union还是stuct 都没有操作,也没有访问控制的概念。
hash_set c++总结(自定义类型stuct、class)。总结自定义struct、class三个案例。find函数测试,hash_set迭代器。
C++封装(class,struct,public,protected,private,friend)的博客例程。 https://blog.csdn.net/flysnow010/article/details/136907034
在C++编程语言中,结构体(struct)是C语言中的概念被继承过来的,它允许用户将不同的数据类型组合成一个单一的复合类型。C++中的结构体不仅可以包含不同数据类型的成员,而且可以拥有成员函数,这在C语言中是不支持的...
在C++编程语言中,`class`和`struct`关键字都是用来定义复合数据类型的,但它们之间存在一些关键差异。本文将深入解析这两个关键字,并通过示例解释它们在实际编程中的应用。 首先,`class`关键字用于声明一个类,...
- **结构体(Struct)**:C和C++中的一种数据类型,用于组合不同类型的变量。在C++中,结构体可以包含成员函数。 - **函数指针**:指向函数的指针,可以在运行时指向不同的函数。 #### 类转换为结构体的基本策略 1....