c++的oop之class和struct

打印 上一主题 下一主题

主题 851|帖子 851|积分 2553

c++中的面向对象
构造函数

与C#一样,可以拥有多个构造函数,但python只有一个构造函数
默认的无参构造函数,可以这样写 classname() = default;
构造函数时初始化变量,建议这样写。对于const或自定义类型必须这样写,而对于内置类型几乎是一样的。
  1. MyClass::MyClass(string name,int id):
  2.         name(name),
  3.         id_(id)
  4. {
  5.         Player::init();
  6. }
复制代码
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:根据实际用途来决定

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

灌篮少年

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表