c++的oop之class和struct
  vWa2lMmTbsfJ 2024年02月29日 54 0
C++

c++中的面向对象

构造函数

与C#一样,可以拥有多个构造函数,但python只有一个构造函数

默认的无参构造函数,可以这样写 classname() = default;

构造函数时初始化变量,建议这样写。对于const或自定义类型必须这样写,而对于内置类型几乎是一样的。

MyClass::MyClass(string name,int id):
	name(name),
	id_(id)
{
	Player::init();
}

C++中类的构造函数,成员变量是在初始化列表初始化还是在函数体中进行赋值? - 知乎 (zhihu.com)

函数的声明

成员函数的声明可以写在类的外面,只需要加上classname::xxx,而不像C#必须写在类的内部。

一般都是在h文件中声明,cpp中实现

类的生命周期

创建

拷贝

销毁 ~classname()

friend友元

friend class xxx ,在一个class的内部再定义一个class,或者单纯的定义单个class

friend友元,可以让外部访问private的字段和函数

关于class和stuct

在C#中这两者有差别挺大,主要是:C#中class是引用类型,而stuct是值类型,到c++中,只有访问类型的区别:stuct的属性全是public 而class可以有private,其它并无区别,从c++ primer看到。

经过实践,c++中如果实例化一个class,那么他仍然不是引用类型,只有指针是引用类型。


FAQ

Q:为什么很多代码中都是使用struct而不是class?

A:根据实际用途来决定

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: 关于堆的一切 下一篇: 咕咕咕
  1. 分享:
最后一次编辑于 2024年02月29日 0

暂无评论

推荐阅读
  8Tw5Riv1mGFK   10天前   23   0   0 C++
  BYaHC1OPAeY4   3天前   15   0   0 C++
  3dygdw7fVgD7   15天前   21   0   0 C++
  oBaV3jusLkh1   13天前   23   0   0 C++
  nmX9dIiR6BtA   13天前   21   0   0 C++
  yZdUbUDB8h5t   6天前   18   0   0 C++
vWa2lMmTbsfJ