C++中class与struct的区别(struct的类型名同时可以作为变量名)

通常我们知道的区别:

(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;

(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。

  除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。

昨天发现一个不知道算不算是区别的东西:

struct的类型名同时可以作为变量名,显然class是不可以的,也可以理解,因为class各类型变量定义时直接是类名,而struct的是struct+结构体名来定义变量的。

示例如下:

#include<iostream>

using namespace std;

struct tt{
int a;
int b;
};

int main(){
    struct tt tt;
    tt.a=13;
    tt.b=43;
    cout<<tt.b<<endl;
    return 0;
}

C++中class与struct的区别(struct的类型名同时可以作为变量名)

时间: 2024-10-29 09:15:09

C++中class与struct的区别(struct的类型名同时可以作为变量名)的相关文章

php中引用和赋值的区别主要在哪里

php中引用和赋值的区别 <pphp 的引用允许用两个变量来指向同一个内容. 相当于他们可以是 不同的名字,却可以指向 同一个 物理空间. 赋值,它实际上意味着把右边表达式的值赋给左边的运算数. 相当于,他们是 不同的名字,不同的物理空间 示例: 引用 $b = '3'; echo $b; //3 $a = &$b; echo $a; //3 $b = 4; echo $b ; //4 echo $a; //4 $a = 5; echo $b ; //5 echo $a; //5 当$a 引

c#中 ==与equals有什么区别(转载)

c#中 ==与equals有什么区别 对于值类型.引用类型来说比较过程怎样的? using System;using System.Collections.Generic;using System.Text; namespace ConsoleApplication1{    class Person    {        private string name; public string Name        {            get { return name; }      

Java中this与super的区别【6】

本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pipi-changing/ 本文版权归作者和博客园共有,未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文连接 ,否则保留追究法律责任的权利. Java中this与super的区别  this&super 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. Java关键字this只能用于方法的方法体内.当一个对象创建后, Java虚拟机(JV

C#中Property和Attribute的区别

C#中Property和Attribute的区别 l  Property就是访问字段(成员变量,Field)提供的一种方式(set/get) l  Property是C#中引入的一种语言特性,把C++中的一些编程技巧上升到语法的地位.这种特性就是把类数据成员声明为私有的,而提供公有的方法实现对他们的访问. l  Property可以说是一个面向对象的概念,提供了对私有字段的访问封装,在C#中以get和set访问器方法实现对可读可写属性的操作,提供了安全和灵活的数据访问封装.比如: public 

C#语言中数组与集合的区别(以List集合为例)

数组用于保存固定数量的数据,定长,占用内存少,遍历速度快: 集合保存的数据数量,可以在程序的执行过程中,不断发生变化,不定长,占用内存多,遍历速度慢: 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现. 下面以List集合为例,具体说明集合与数组的区别: 1.定义的格式 集合:List <数据类型> 变量名; 数组:数据类型 [ ] 变量名; 2.赋值 集合:变量名 = new List <数据类型> ( );  集合是不定长的,所以赋值时无须

c++中typename和class的区别介绍

"typename"是一个C++程序设计语言中的关键字.相当用于泛型编程时是另一术语"class"的同义词.这个关键字用于指出模板声明(或定义)中的非独立名称(dependent names)是类型名,而非变量名. 学习C++的人对class这个关键字都非常明白,class用于定义类.在模板引入c++后,最初定义模板的方法为: template<class T>...... 在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用

浅谈c++中class与struct的区别

本文主要讨论class与struct的区别.为什么是区别而不是共同点呢?因为在绝大部分情况下,class和struct其实是可以互相替换的, 那么区别到底有哪些呢,我总结了一下大概有如下3点: 1.成员的默认访问权限不同.如果我们使用struct关键字,则定义在第一个访问说明符之前的成员是public的:相反,如果我们使用class关键字,则这些成员是private的. class A //class { int x; public: A():x(0){} }; struct B<span st

C++/C中的struct和typedef struct用法和区别

struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名.Stu==struct Student 另外这里也可以不写Student(于是也不能struct

在C和C++中struct与typedef struct的区别详细介绍

c中测试code struct Cmstruct { int c; } Cm; // Cm是一个变量 typedef struct MyStruct //这里的 Mystruct 可以省略 { int m; } My; // My 是struct MyStruct 别名 My st; struct Cmstruct cm1; // 只能使用struct Cmstruct来定义 不能使用Cmstruct st.m = 1; printf("%d\n", st.m); // 1 // st